读书人

MDI子窗体被父窗体控件遮挡(50分),该怎

发布时间: 2012-03-20 14:01:11 作者: rapoo

MDI子窗体被父窗体控件遮挡(50分)
MDI子窗体被父窗体控件遮挡,如何解决,哪位大侠有解决的方法,声明,我的控件一定要放在父窗体上。
我有个窗体叫ParentFrm用来放我的自定义控件,并作为MDIContainer,在ParentFrm上打开MDI窗体后,MDI窗体会被上面放置的其他控件遮挡。

[解决办法]

C# code
namespace text{    partial class Form1    {        /// <summary>        /// 必需的设计器变量。        /// </summary>                private System.ComponentModel.IContainer components = null;        /// <summary>        /// 清理所有正在使用的资源。        /// </summary>        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>        protected override void Dispose(bool disposing)        {            if (disposing && (components != null))            {                components.Dispose();            }            base.Dispose(disposing);        }        #region Windows 窗体设计器生成的代码        /// <summary>        /// 设计器支持所需的方法 - 不要        /// 使用代码编辑器修改此方法的内容。        /// </summary>        private void InitializeComponent()        {            this.toolStrip1 = new System.Windows.Forms.ToolStrip();            this.panel1 = new System.Windows.Forms.Panel();            this.SuspendLayout();            //             // toolStrip1            //             this.toolStrip1.Location = new System.Drawing.Point(0, 0);            this.toolStrip1.Name = "toolStrip1";            this.toolStrip1.Size = new System.Drawing.Size(553, 25);            this.toolStrip1.TabIndex = 4;            this.toolStrip1.Text = "toolStrip1";            //             // panel1            //             this.panel1.BackColor = System.Drawing.SystemColors.ControlDarkDark;            this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;            this.panel1.Location = new System.Drawing.Point(0, 25);            this.panel1.Name = "panel1";            this.panel1.Size = new System.Drawing.Size(553, 382);            this.panel1.TabIndex = 5;            //             // Form1            //             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;            this.ClientSize = new System.Drawing.Size(553, 407);            this.Controls.Add(this.panel1);            this.Controls.Add(this.toolStrip1);            this.IsMdiContainer = true;            this.MinimumSize = new System.Drawing.Size(561, 439);            this.Name = "Form1";            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;            this.Text = "Form1";            this.Load += new System.EventHandler(this.Form1_Load);            this.ResumeLayout(false);            this.PerformLayout();        }        #endregion        private System.Windows.Forms.ToolStrip toolStrip1;        public  System.Windows.Forms.Panel panel1;    }}
[解决办法]
有一个变通的办法可以达到这种效果,
就是建立一个控件大小的不规则窗口,看起来是一个固定在父窗口的控件,其实下面隐含了一个只有这个控件大小的form
C# code
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication27{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            this.IsMdiContainer = true;            Form HideF = new Form();            HideF.MdiParent = this;            TextBox TB = new TextBox();            TB.Parent = HideF;            HideF.Region = new Region(TB.Bounds);            HideF.FormBorderStyle = FormBorderStyle.None;            HideF.Show();            Form F = new Form();            F.MdiParent = this;            F.Show();        }    }} 

读书人网 >C#

热点推荐