C#Winform中控件的布局总结篇,包含Z顺序的介绍

您所在的位置:网站首页 winformpanel置于顶层 C#Winform中控件的布局总结篇,包含Z顺序的介绍

C#Winform中控件的布局总结篇,包含Z顺序的介绍

2023-09-07 07:41| 来源: 网络整理| 查看: 265

windows窗体应用程序的控件都派生自Control类,并继承了许多通用成员,下面介绍Control类的一些基本特征,了解这些能够大致知道控件是如何实现在窗体中布局的。

Achor指示在控件的容器被调整时,控件紧贴着哪个方向的边沿,例如在一个窗口中放置一个按钮,并将按钮的Anchor属性设置为Right+Bottom,当用户调整窗口的大小时,按钮将保持与窗口的底部和右边沿的距离不变ForeColor、BackColorForeColor属性表示前景色,即控件上呈现的文本的颜色;BackColor属性表示控件的背景色Dock指示控件如何填充容器中的可用空间,如果设置为FILL则表示控件将占满所有的可用空间;如果设置为TOP,则表示控件将占用容器上方的所有空间Location与Left、Top表示控件在容器中的位置、如果控件是窗口,那么它的位置就相当于桌面坐标(屏幕坐标)。由于Location属性是Point结构,是值类型,因此不应该直接修改其X和Y的值,而是向Location属性赋予一个新的Point实例;叶可以直接设置Left(x坐标)属性和Top(y坐标)属性的值来调整控件的位置,例:Point p2 = new Point(20, 30); pictureBox1.Location = p2Size和Width、Height表示控件的大小,由高度和宽度两个值决定。Size类型是Size结构,是值类型,不能直接修改,必须将一个新的Size实例赋值给Size属性,或者直接修改控件的Width和Height属性,例如:控件名.Size=new Size(高度,宽度)

调整控件的Z顺序 当窗口或容器控件中的控件在布局过程中发生重叠的时候,会出现层次性。Z顺序较大的控件会遮挡Z顺序较小的控件,即放在顶层的控件会挡住放在底层的控件。 1.设计人员可以在设计阶段通过窗体设计器来调整控件的Z顺序,右击—【置于顶层】/【置于底层】。 2.可以在运行阶段动态改变控件的Z顺序。操作方式是左击时增加控件的Z顺序,右击时减少控件的Z顺序。同时,为了让读者可以清晰的观察到控件的布局变化,可以分别处理他们的Point事件(Control.Point控件重绘)。 可以试试下面这段代码,分别增加label1,label2,label3.体会它的变化

public Form1() { InitializeComponent(); label1.Paint += label1_Paint; label2.Paint += label2_Paint; label3.Paint += label3_Paint; label1.MouseClick += OnLabelMouseClick; label2.MouseClick += OnLabelMouseClick; label3.MouseClick += OnLabelMouseClick; } private void OnLabelMouseClick(object sender, MouseEventArgs e)//此为共享事件处理程序 { Control c = sender as Control; if(e.Button==System.Windows.Forms.MouseButtons.Left) { c.BringToFront();//增加Z顺序 } if (e.Button == System.Windows.Forms.MouseButtons.Right) { c.SendToBack();//减少Z顺序 } } private void label3_Paint(object sender, PaintEventArgs e) { Label lb = sender as Label;//是事件源,表示触发事件的那个组件 Pen pen = new Pen(Color.Blue, 15f);//用于绘制边框的笔 e.Graphics.DrawRectangle(pen, new Rectangle(0, 0, lb.Width, lb.Height)); pen.Dispose();//释放Pen对象 } private void label2_Paint(object sender, PaintEventArgs e) { Label lb = sender as Label;//是事件源,表示触发事件的那个组件 Pen pen = new Pen(Color.Red, 15f);//用于绘制边框的笔 e.Graphics.DrawRectangle(pen, new Rectangle(0, 0, lb.Width, lb.Height)); pen.Dispose();//释放Pen对象 } private void label1_Paint(object sender, PaintEventArgs e) { Label lb = sender as Label;//是事件源,表示触发事件的那个组件 Pen pen = new Pen(Color.Yellow, 15f);//用于绘制边框的笔 e.Graphics.DrawRectangle(pen, new Rectangle(0, 0, lb.Width, lb.Height)); pen.Dispose();//释放Pen对象 }

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3