WinForm真入门(5)——控件的基类Control

控件的基类--Control

  • 用于 Windows 窗体应用程序的控件都派生自 Control类并继承了许多通用成员,这些成员都是平时使用控件的过程最常用到的。
  • 无论要学习哪个控件的使用,都离不开这些基本成员,尤其是一些公共属性。由于 Conlrol 类规范了控件的基本特征,因此在学习如何使用各种控件之前,先介绍 Control类
  • 可以简单理解为 WinForm程序 == 一些控件组合 + 事件 + 业务逻辑 组成。控件是非常重要的。

本节主要介绍 Control类的一些基本属性,剩下一些内容会留到后面在介绍如何自己开发控件时再讨论。

一、Control类的一些常用属性

1、"Name"属性
控件实例的名称,通常通过"属性"窗口设置,控件实例名称与控件变量名称相同,以便在代码中能够引用。

指示在控件的容器被调整时,控件紧贴着哪个方向的边沿。比如,一个窗口中放置了一个按钮,并将按钮的Anchor属性设置为Right+Boltom,当用户调整窗口的大小时,按钮将保持与窗口的底部和右边沿的距离不变。下图为窗口被调整大小之前按钮的位置,下图为窗口被调整大小后按钮的位置,可以看到,按钮始终紧贴着窗口的右下角不变。

调整前如下:

调整后如下:

3、"Margin和Padding"属性

Margin属性与Padding属性都表示边距。如图所示,A、B、C三个控件形成嵌关系假设控件B为当前控件,即以B控件作为参考。Margin指的是B控件与它的父容器A边沿之间的距离;Padding指的是控件B与它的子级控件C之间的边距。所以,Margin与Padding是相对值。

4、"Visible"属性

指示控件是否可见,如果为true,则用户可以看到该控件,否则用户将看不到该控件
5、"Enabled"属性

指示控件是否可用。如果为true,说明控件处于可用状态;如果为false,表示控件不可用、控件将不与用户进行任何交互
6、"Font"属性

表示控件中所呈现文本的字体。包括字体、字体大小、是否加粗等
7、"ForeColor、BackColor和Backgroundlmage"属性

ForeColor属性表示前景色,即控件上星现的文本的颜色;BackColor展性表示控件的背景色;BackgroundImage属性可以提供一个像实例来绘制控件的背景。
8、"Dock"属性

指示控件如何填充容器中的可用空间。如果设置为Fill 则表示控件将占满所有可用空间;如果设置为Top,则表示控件将占用容器上方的所有空间;如果设置为Left,则表示控件将占用容器的左侧所有空间;如果设置为Right,则表示控件将占用容器的右侧所有空间;如果设置为Bottom,则表示控件将占用容器的下方所有空间;
9、"Location与Lef、Top"属性

表示控件在容器中的位置,如果控件是窗口,那么它的位置就相对于桌面坐标(屏落坐标)而定。由于Location属性的类型是Poini结构,是值类型,因此不能直接修改其X和Y的值,而是向Locaton属性赋一个新的Point实例;也可以直接设置Lef属性(X坐标)和Top属性(坐标)的值来调整控件的位置
10、"Size与Width、Height"属性

表示控件的大小,由宽度和高度两个值决定。与Locaton属性一样,Size属性的类型是Size结构,是值类型,不能直接修改,必须将一个新的Size实例赋给Size属性;或者直接修改控件的Width和Height属性
11、"Cursort"属性

获取或设置当鼠标指针位于控件上时显示的光标。


二、Control类的一些常用事件

1、Click:当控件被单击时发生。
2、DoubleClick:当控件被双击时发生。
3、GotFocus 和 LostFocus:分别当控件获得或失去焦点时发生。
4、KeyDown、KeyPress 和 KeyUp:分别当控件有焦点时,按下、按下并释放、释放一个键时发生。
5、MouseDown、MouseEnter、MouseMove、MouseHover、MouseLeave 和 MouseUp:分别当鼠标在控件上按下、移入、移动、悬停、移出和释放时发生。
6、Paint:当控件需要重绘时发生。
7、Resize:当控件的大小发生变化时发生。
8、DragDrop、DragEnter、DragLeave 和 DragOver:与拖拽操作相关的事件。

三、控件布局时注意点:控件的Z顺序

什么是控件的Z顺序?当窗体或容器控件中的控件在布局过程中发生重叠时,会出现层次性,Z顺序较大的控件会遮挡Z顺序较小的控件,即放在顶层的控件会挡住放在底层的控件。Z顺序大致结构如图所示:

Winform Z顺序核心解析

1、Z顺序基础概念

  • Z顺序(Z-Order)是Winform中决定控件堆叠层级的属性,沿窗体的Z轴(深度方向)排列。Z序值较高的控件会覆盖较低值的控件,离窗体越近的控件优先级越高‌。

2、设计时调整Z顺序

  • 图形化操作‌:
    右键目标控件 → 选择【置于顶层】(Bring to Front)或【置于底层】(Send to Back),直接调整其显示层级‌。

    点击"置于顶层"后,A控件会跑到B控件上方,如下图:

‌布局影响‌:

控件停靠(Dock属性)时,Z顺序会影响停靠优先级。较近的控件优先占据停靠区域,较远控件则在剩余空间中调整‌。


3、编程方式动态调整

‌常用方法‌:

  • BringToFront():将控件提升至最顶层。
  • SendToBack():将控件移至最底层‌。

‌精细控制‌:

  • 使用Controls.SetChildIndex()方法,通过指定索引值调整子控件的Z序。例如:
csharp 复制代码
this.Controls.SetChildIndex(specificControl, 0);          // 置顶
this.Controls.SetChildIndex(anotherControl, Controls.Count -1); // 置底

此方法适用于容器内的子控件层级调整‌。


4、注意事项

  • 性能优化‌:

    若父控件包含大量子控件,频繁调用SetChildIndex可能影响性能。建议减少调用频率或批量操作‌。

  • 跨线程操作‌:

    在非UI线程中调整Z顺序时,需通过Invoke或BeginInvoke方法确保线程安全‌。

  • 视觉效果增强‌:

    可通过调整控件的Opacity、BackColor等属性,辅助区分重叠控件的显示层次‌。


5、Z顺序与布局优先级

  • Z顺序不仅影响显示层级,还与控件的停靠(Dock)、锚定(Anchor)等布局属性交互。例如:停靠控件按Z序从近到远依次布局,后停靠的控件可能被覆盖‌。

总结:本章主要讲解了,控件的基类Control的常用属性、Control类的一些常用事件,还有控件的Z顺序,掌握他们,对于学好WinForm 是至关重要的。当然,随着后面的章节,大家会掌握的越来越熟练。如果对你有所帮助的话,欢迎点赞、关注加收藏!!!

相关推荐
董先生_ad986ad2 小时前
C# 中的 `lock` 关键字本质
开发语言·c#
爱编程的鱼6 小时前
C# 枚举(Enum)声明与使用详解
java·windows·c#
冰茶_7 小时前
C#中常见的设计模式
java·开发语言·microsoft·设计模式·微软·c#·命令模式
chegan9 小时前
用c#从头写一个AI agent,实现企业内部自然语言数据统计分析(二)-数据结构和代码分析方法
ai·c#·agent
煤烦恼9 小时前
Kafka 命令行操作与 Spark-Streaming 核心编程总结
c#·linq
Zhen (Evan) Wang11 小时前
.NET 6 + Dapper + User-Defined Table Type
sqlserver·c#·.net·wpf
FAREWELL0007512 小时前
C#进阶学习(十四)反射的概念以及关键类Type
开发语言·学习·c#·反射·type
FAREWELL0007512 小时前
C#进阶学习(十三)C#中的预处理器指令
开发语言·学习·c#·预处理指令
qq_2979080113 小时前
c#简易超市充值卡程序充值消费查余额
经验分享·sqlserver·开源·c#·.net·开源软件
浅陌sss13 小时前
C#中的弱引用使用
c#