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

news2025/4/5 12:42:54

控件的基类–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序。例如:
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 是至关重要的。当然,随着后面的章节,大家会掌握的越来越熟练。如果对你有所帮助的话,欢迎点赞、关注加收藏!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Linux内存管理:实验驱动的深度探索》【附录】【实验环境搭建 4】【Qemu 如何模拟numa架构】

我们在学习 linux 内核时,会涉及到很多 numa 的知识,那我们该如何在 qemu 中模拟这种情况,来配合我们的学习呢? 我们该如何模拟 如下的 numa 架构 Qemu 模拟 NUMA 架构 -M virt,gic-version3,virtualizationon,typevirt \ -cp…

【YOLO系列(V5-V12)通用数据集-工程用车检测数据集】

YOLO格式的工程车检测数据集,适用于YOLOv5-v11所有版本,可以用于本科毕设、发paper、做课设等等,有需要的在这里获取: 【YOLO系列(V5-V12)通用数据集-工程用车检测数据集】 【工程车类型检测数据集】共2655…

卫星智能化健康管理#卫星工程系列

伴随我国航天业飞速发展,积累了大量的卫星试验数据,如何从海量、多源、多模态的卫星试验数据中挖掘分析出内部规律和潜在价值,构建卫星装备系统的全生命周期试验数据知识体系显得尤为迫切。卫星故障传统的诊断方法局限在门限层面,…

Neo4j操作数据库(Cypher语法)

Neo4j数据库操作语法 使用的数据库版本 (终端查询) >neo4j --version 2025.03.0批量上传数据 UNWIND [{name: Alice, age: 30},{name: Bob, age: 25} ] AS person CREATE (p:Person) SET p.name = person.name, p.age = person.age RETURN p;查询结点总数 MATCH (n) RETU…

[GN] Python3基本数据类型 -- 与C的差异

文章目录 前言Python3的基本数据类型6个标准的数据类型NumbersStringListtupleSetsDictionaries Python运算符逻辑 运算符成员运算符身份运算符 Python3 数字Python3 序列序列切片序列相加序列相乘序列相关内置函数 Python3 列表访问列表的值更新列表删除列表元素拼接列表嵌套列…

MSF上线到CS工具中 实战方案(可执行方案)

目录 实际案例背景 步骤详解 1. 获取低权限 Meterpreter 会话 1.1 使用 Metasploit 获取会话 2. 提权到 SYSTEM 权限 2.1 使用 getsystem 自动提权 2.2 如果 getsystem 失败:使用令牌冒充 (incognito 模块) 3. 上线到 Cobalt Strike 3.1 生成 Cobalt Strik…

IntelliJ IDEA 2020~2024 创建SpringBoot项目编辑报错: 程序包org.springframework.boot不存在

目录 前奏解决结尾 前奏 哈!今天在处理我的SpringBoot项目时,突然遇到了一些让人摸不着头脑的错误提示: java: 程序包org.junit不存在 java: 程序包org.junit.runner不存在 java: 程序包org.springframework.boot.test.context不存在 java:…

基于DeepSeek、ChatGPT支持下的地质灾害风险评估、易发性分析、信息化建库及灾后重建

前言: 地质灾害是指全球地壳自然地质演化过程中,由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。在降水、地震等自然诱因的作用下,地质灾害在全球范围内频繁发生。我国不仅常见滑坡灾害,还…

Websoft9分享:在数字化转型中选择开源软件可能遇到的难题

引言:中小企业数字化转型的必由之路 全球94.57%的企业已采用开源软件(数据来源:OpenLogic 2024报告),开源生态估值达8.8万亿美元。中小企业通过开源软件构建EPR系统、企业官网、数据分析平台等,可节省80%软件采购成本。…

Windows修改hosts文件让向日癸软件联网

Windows修改hosts文件让向日癸软件联网 前言一、查看向日葵软件使用的网址及IP1.清除dns记录2.打开向日葵软件并将dns记录导出txt 二、修改Windows服务器的hosts文件1.winx选择Windows PowerShell(管理员)2.在Windows PowerShell中输入如下内容:3.在hosts文件最后添…

2021 CCF CSP-S2.括号序列

题目 4091. 括号序列 算法标签: 区间 d p dp dp 思路 区间 d p dp dp添加维表示形态 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k], 对于每种形态考虑状态如何进行转移, 枚举的时候不能重复, 星号也要定义唯一的解析方式, 算法时间复杂度 O ( n 3 ) O(n ^ 3) O(n3) 代码 #…

Uni-app 项目 PDF 批注插件库在线版 API 示例教程

本文章介绍 Uni-app 项目中 PDF 批注插件库 ElasticPDF 在线版 API 示例教程,API 包含 ① 导出批注后PDF数据;② 导出纯批注 json 数据;③ 加载旧批注;④ 切换文档;⑤ 切换用户;⑥ 清空批注 等数据处理功能…

学透Spring Boot — 010. 单元测试和Spring Test

系列文章目录 这是CSDN postnull 博客《学透Spring Boot》系列的一篇,更多文章请移步:Postnull - 学透Spring Boot系列文章 文章目录 系列文章目录前言1. 基本概念UT 单元测试TDD 测试驱动开发UT测试框架Mock框架 3. Spring Test为什么要用Spring Test引…

TortoiseGit多账号切换配置

前言 之前配置好的都是,TortoiseGit与Gitee之间的提交,突然有需求要在GitHub上提交,于是在参考网上方案和TortoiseGit的帮助手册后,便有了此文。由于GitHub已经配置完成,所以下述以配置Gitee为例。因为之前是单账号使用…

3D 地图渲染-区域纹理图添加

引入-初始化地图&#xff08;关键代码&#xff09; // 初始化页面引入高德 webapi -- index.html 文件 <script src https://webapi.amap.com/maps?v2.0&key您申请的key值></script>// 添加地图容器 <div idcontainer ></div>// 地图初始化应该…

【Linux】条件变量封装类及环形队列的实现

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…

离线部署kubesphere(已有k8s和私有harbor的基础上)

前言说明&#xff1a;本文是在已有k8s集群和私有仓库harbor上进行离线安装kubesphere&#xff1b;官网的离线教程写都很详细&#xff0c;但是在部署部份把搭建集群和搭建仓库也写一起了&#xff0c;跟着做踩了点坑&#xff0c;这里就记录下来希望可以帮助到需要的xdm。 1.根据官…

非阻塞IO,fcntl,多路转接,select,poll,epoll,reactor

IO次数会影响程序的效率&#xff0c;在编程中往往会尽量减少IO次数&#xff0c;用以提高程序的效率&#xff0c;例如缓冲区,就是减少IO次数提高效率的一种方式&#xff1b;而IO影响效率的最大原因其实是因为IO等拷贝&#xff0c;在进行IO时往往需要拷贝的数据就绪&#xff0c;或…

Redis常用的数据结构及其使用场景

字符串(String) string 是 redis 最基本的类型&#xff0c;你可以理解成与 Memcached 一模一样的类型&#xff0c;一个 key 对应一个 value。 string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据&#xff0c;比如jpg图片或者序列化的对象。 string 类型是 R…

PhotoShop学习04

1.背景图层 最下面的被锁锁住的图层为背景图层&#xff0c;背景图层充当整个图层的背景&#xff0c;名字标注为背景&#xff0c;无法修改背景图层的排序始终位于图层最底部。 当我想把上方的图层移动到背景图层之后&#xff0c;发现无法移动图层无法移动&#xff0c;把背景图层…