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序。例如:
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.mzph.cn/news/900586.shtml

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

相关文章

RAG(检索增强生成)系统,提示词(Prompt)表现测试(数据说话)

在RAG(检索增强生成)系统中,评价提示词(Prompt)设计是否优秀,必须通过量化测试数据来验证,而非主观判断。以下是系统化的评估方法、测试指标和具体实现方案: 一、提示词优秀的核心标准 优秀的提示词应显著提升以下指标: 维度量化指标测试方法事实一致性Faithfulness …

Appium的学习总结-Inspector参数设置和界面使用(5)

环境搭建好后,怎么使用呢? 环境这里使用的是: Appium的Server端GUI 22版本 Inspector需要单独下载安装,GUI里并没有集成。 (使用Appium v1.22.0,查看元素信息需要另外安装下载Appium Inspector) 操作&…

I/O进程3

day3 五、进程 7.函数接口 7.1创建子进程 pid_t fork(void);功能:创建子进程返回值:成功:在父进程中:返回子进程的进程号 >0 在子进程中:返回值为0; 失败:-1并设置errno 特点 1.子进程几乎…

k8s 1.24.17版本部署(使用Flannel插件)

1.k8s集群环境准备 推荐阅读: https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 1.1 环境准备 环境准备:硬件配置: 2core 4GB磁盘: 50GB操作系统: Ubuntu 22.04.04 LTSIP和主机名:10.0.0.231 master23110.0.0.232 worker23210.0…

网络编程—TCP/IP模型(UDP协议与自定义协议)

上篇文章: 网络编程—Socket套接字(TCP)https://blog.csdn.net/sniper_fandc/article/details/146923783?fromshareblogdetail&sharetypeblogdetail&sharerId146923783&sharereferPC&sharesourcesniper_fandc&sharefro…

GNSS有源天线和无源天线

区别 需要外部供电的就是有源天线,不需要外部供电的是无源天线。 无源天线 一般就是一个陶瓷片、金属片等,结构简单,成本低廉,占用空间及体积小,适合于强调紧凑型空间的导航类产品。 不需要供电,跟设备直…

网络编程—TCP/IP模型(IP协议)

上篇文章: 网络编程—TCP/IP模型(TCP协议)https://blog.csdn.net/sniper_fandc/article/details/147011479?fromshareblogdetail&sharetypeblogdetail&sharerId147011479&sharereferPC&sharesourcesniper_fandc&sharef…

基于金字塔视觉变换的类引导网络高分辨率遥感图像高效语义分割

Class-Guidance Network Based on the Pyramid Vision Transformer for Efficient Semantic Segmentation of High-Resolution Remote Sensing Images 摘要 多分类语义分割中类之间的小差异和类内的大变化是全卷积神经网络的“编码器-解码器”结构没有完全解决的问题&#…

基于人工智能的高中教育评价体系重构研究

基于人工智能的高中教育评价体系重构研究 一、引言 1.1 研究背景 在科技飞速发展的当下,人工智能技术已广泛渗透至各个领域,教育领域亦不例外。人工智能凭借其强大的数据处理能力、智能分析能力和个性化服务能力,为教育评价体系的创新与发…

DeepSeek在互联网技术中的革命性应用:从算法优化到系统架构

引言:AI技术重塑互联网格局 在当今快速发展的互联网时代,人工智能技术正以前所未有的速度改变着我们的数字生活。DeepSeek作为前沿的AI技术代表,正在多个互联网技术领域展现出强大的应用潜力。本文将深入探讨DeepSeek在搜索引擎优化、推荐系统、自然语言处理以及分布式系统…

数字游戏(继Day 10)

主体: #include<stdio.h> #include<time.h> #include<stdlib.h>#include"mygetch.h"#define MAX 51 //定义测试字母的最大长度void help() {printf("\n****************************************");printf("\n*输入过程中无法退出…

谈谈模板方法模式,模板方法模式的应用场景是什么?

一、模式核心理解 模板方法模式是一种​​行为设计模式​​&#xff0c;通过定义算法骨架并允许子类重写特定步骤来实现代码复用。 如同建筑图纸规定房屋结构&#xff0c;具体装修由业主决定&#xff0c;该模式适用于​​固定流程中需要灵活扩展​​的场景。 // 基础请求处理…

2024 Jiangsu Collegiate Programming Contest H

记录一下为数不多的网络流 #pragma GCC optimize(3,"Ofast","inline") #include<bits/stdc.h> #include <execution> using namespace std; using i64 long long; using i128 __int128;template <typename T>struct MCFgraph{struct …

Hadoop序列化与反序列化

一、Hadoop序列化概述 &#xff08;一&#xff09;什么是序列化和反序列化 序列化&#xff1a;序列化是将对象&#xff08;如Java中的类实例&#xff09;转换为字节序列的过程。在Hadoop中&#xff0c;数据在分布式系统中传输或者存储到磁盘时&#xff0c;需要将数据对象序列…

FreeRTOS临界区

在FreeRTOS中&#xff0c;临界区通过关闭可管理的中断来保护共享资源&#xff0c;具体关闭的中断层级由configMAX_SYSCALL_INTERRUPT_PRIORITY宏定义决定。以下是关键点解析&#xff1a; 中断优先级分类&#xff1a; 高优先级中断&#xff1a;数值低于configMAX_SYSCALL_INTERR…

cdw2: TypeScript

一、javascript的问题 二、初识typescript https://mp.weixin.qq.com/s/wnL1l-ERjTDykWM76l4Ajw 三、类型 二进制&#xff1a;ob开头&#xff0c;八进制&#xff1a;0o开头&#xff0c;十六进制&#xff1a;0x开头 开发中不这样写 这样写 匿名函数的参数最好不要…

Qt中的元对象系统

Qt的元对象系统(Meta-Object System)提供了对象间通信的信号和槽机制、运行时类型信息和动态属性系统。 元对象系统基于以下三个方面&#xff1a; (1).QObject类&#xff1a;为可以利用元对象系统的对象提供了基类。 (2).Q_OBJECT宏&#xff1a;用于启用元对象功能&#xff0c;…

深入理解重排(Reflow)与重绘(Repaint),写出高性能 CSS 动画

在前端开发中&#xff0c;CSS 动画是提升用户体验的重要手段&#xff0c;但很多开发者在使用动画时并不了解浏览器背后的渲染机制&#xff0c;导致动画卡顿甚至影响整体性能。本文将带你深入理解 CSS 中的两大核心概念 —— 重排&#xff08;Reflow&#xff09; 与 重绘&#x…

<贪心算法>

前言&#xff1a;在主包还没有接触算法的时候&#xff0c;就常听人提起“贪心”&#xff0c;当时是layman&#xff0c;根本不知道说的是什么&#xff0c;以为很难呢&#xff0c;但去了解一下&#xff0c;发现也不过如此嘛&#xff08;bushi)&#xff0c;还以为是什么高级东西呢…

大模型快速 ASGI 服务器uvicorn

基础概念类 1. 什么是 Uvicorn&#xff0c;它的作用是什么&#xff1f; 答案&#xff1a;Uvicorn 是一个基于 Python 的快速 ASGI&#xff08;异步服务器网关接口&#xff09;服务器。它的主要作用是作为 Web 应用程序的服务器&#xff0c;负责接收客户端的请求&#xff0c;并…