手把手教你用几行代码给winform多个控件(数量无上限)赋值

news2024/9/21 4:24:05

前言:

我们在开发winform程序的过程中,经常会遇到这样一个场景,我们设计的界面,比如主窗体有一百多个TextBox,然后初始化的时候要对这个一百多个TextBox的Text属性赋值,比如赋个1,如果是winform开发的新手,这时候就会在界面上或者代码中分别给一百多个TextBox的Text属性赋值了,当你改十个TextBox的时候感觉还行,当你改到五十多个TextBox的时候就想说,去他妈的,都是什么垃圾需求,搞这么多Text搞个球啊!下面展示初学者的两种搞定这个赋值需求的方法:
1)方法一、在设计器阶段在界面上给每个TextBox赋值为1,如下图:(这里用10个TextBox举例)
在这里插入图片描述

该方法需要对每个控件依次赋值,可能有人说我先在界面给一个TextBox赋值,然后我直接复制、粘贴,这样变成两个,然后两个复制粘贴变成4个,这样也挺快,可是如果当你复制粘贴完了,结果有人告诉你,我要把这个“1”变成“10”,你是不是傻眼了?难道重新搞一遍吗?很显然这个方法不是一个好方法,当控件达到几百个,并且初始化值随时可能发生变化的情况下,根本玩不动啊!
1)方法二、在代码中给个TextBox赋值为1,界面不修改,如下图:
在这里插入图片描述
该方法不在界面赋值,而是用代码给控件赋值,如果有一百个TextBox,就要写100行代码,一千个TextBox就要写1000行代码,写个锤子啊!很显然,这个方法面对大量控件时也是很无力!

那么有没有简单一点的方法呢?下面博主就来教你两种方法,几行代码就能搞定同时给成百上千个控件(理论上可以是无数个控件)赋值。

博主推荐方法一(控件的父控件只有一个)、

假设所有的TextBox都是在Form窗体上,TextBox的父控件都是同一个,那么这里以Form1为例,代码如下:

   public Form1()
        {
            InitializeComponent();


            var controlCollection = this.Controls;//获取Form1中所有子控件
            foreach (Control control in controlCollection)
            {
                if (control is TextBox)//如果该控件类型是TextBox,则将它的Text属性赋值为1
                {
                    control.Text = "1";
                }
            }
        }

上述代码是在Form1的构造函数中,首先获取Form1中所有子控件,然后判断该子控件类型是不是TextBox,如果是TextBox,则将该子控件的Text属性设置为1。这样总共用了不超过10行代码就搞定了无数TextBox的赋值问题。

博主推荐方法二(控件的父控件有很多个)、

上述代码虽然可以在一定程度上解决多个控件赋值问题,但是有一种情况它解决不了,假设,TextBox除了放在Form1上,我还有多个TextBox放在GroupBox中,GroupBox是放在From1上的,如下图:
在这里插入图片描述
Form1上有10个TextBox,groupBox1里面有5个TextBox,如果还运行上述的代码,则效果如下:
在这里插入图片描述
你会发现groupBox1里面有5个TextBox的值没有被赋值为1,这是因为groupBox1不是TextBox类型,所以不会对groupBox1中的TextBox进行赋值,那么有没有办法解决这个问题呢?答案是有的,博主写这篇文章就是来帮助大家解决这个问题的,下面看一段代码:

 private void InitialTextBox(Control control )
        {
            if(control is TextBox)//如果该控件是TextBox,则将它的Text属性设置为1
            {
                control.Text = "1";
            }
            else
            {
                var controlCollection = control.Controls;//如果该控件不是TextBox,则获取它的子控件
                foreach (Control subControl in controlCollection)
                {
                    InitialTextBox(subControl);//递归调用
                }
            }
        }
 public Form1()
        {
            InitializeComponent();
            InitialTextBox(this );//调用方法
        }

上述代码中,我先定义了一个InitialTextBox的方法,然后在Form1构造函数中调用,调用时传入Form1即可,效果如下:
在这里插入图片描述
这时候你会发现groupBox1中的TextBox的值也被赋值为1了。上述代码的核心就是InitialTextBox方法,该方法用到了C#中的一个知识叫“递归”,递归就是用于需要嵌套访问的场合,如果你不懂递归的原理也没关系,就照抄我的模板就可以了。老铁们,以后再遇到这种需要给多个控件赋值的场景是不是一点也不慌了?哈哈!如果你也想做到“控件心中过,界面自然成”的境界,那么接着往下看哦!

博主履历介绍:

本人2017年硕士毕业,行业经验六年+,一直在自动化行业从事上位机软件开发的工作,当然运动控制和机器视觉也广泛涉及,目前也是以高级软件工程师的职位任职,薪资我就不方便透露了,你可以去招聘网站去查上位机高级软件工程师的薪资范围(只能说至少两万月薪Base),可以说理论和实战经验都比较丰富,所以我的经验对学习c#的尤其自动化行业的人极具参考价值,博主历时多年经验积累,打造了适合小白以及有一定经验工程师的《winform控件从入门到精通》系教程,限时19.9元(一顿外卖),可以说如果掌握了我的博客所有文章,你也可以达到甚至超越我的水平,原创不易,敬请谅解!本专栏会对winform中所有控件进行介绍,包括控件的属性和事件,重点是我会将控件所有属性和事件进行介绍,并且也会在专栏中增加一些案例来帮助想学习winform控件的程序员来巩固以及练习如何灵活的运用控件的各种特性来实现不同的功能,所以该专栏文章既包含了入门内容,也包含了进阶内容,对于想学习winform控件开发的程序员来说这绝对是一份非常详细的资料,您也可以将其作为自己的字典,需要使用某个功能的时候来查阅即可,当然如果您发现我的文章中有您需要的功能,但是我没有进行介绍,您可以在我的博客中留言,我会及时更新该功能,感谢大家一直以来的支持!

订阅《winform控件从入门到精通》专栏的vip成员还可享受以下增值服务:
1)进入VIP群和众多学员一起交流学习winform,c#,找工作等
2)博主会上传一些免费的学习资料帮助大家学习,比如本篇博文说的上位机源码、c#本质论的电子书籍、串口助手的源码等
3)如果遇到学习困难还可在群里@博主来帮助你。
4)qq群号:651251930
注意:只有订阅了博客专栏的学员才能进入群,加群时留下自己的博客名称即可。

1、Winform从入门到精通(27)——Label(详细版本)
2、Winform从入门到精通(2)——Button(史上最全)
3、Winform从入门到精通(3)——Form(史上最全)
4、Winform从入门到精通(4)——Textbox(史上最全)
#5、Winform从入门到精通(5)——checkBox(史上最全)
6、Winform从入门到精通(6)——radioButton(史上最全)
7、Winform从入门到精通(7)——ComboBox(史上最全)
8、Winform从入门到精通(8)——richTextBox(史上最全)
9、Winform从入门到精通(9)——ListBox(史上最全)
10、Winform从入门到精通(10)——CheckedListBox(史上最全)
11、Winform从入门到精通(11)——numericUpDown(史上最全)
12、Winform从入门到精通(12)——LinkLabel(史上最全)
13、Winform从入门到精通(13)——DateTimePicker(史上最全)
14、Winform从入门到精通(14)——NotifyIcon(史上最全)
15、Winform从入门到精通(15)——contextMenuStrip(史上最全)
16、Winform从入门到精通(16)——Timer(史上最全)
17、Winform从入门到精通(17)——PictureBox(史上最全)
18、Winform从入门到精通(18)——Chart(史上最全)
19、Winform从入门到精通(19)——DataGridView(史上最全)
20、Winform从入门到精通(20)——TableLayoutPanel(史上最全
21、Winform从入门到精通(21)——ProgressBar(史上最全)
22、Winform从入门到精通(22)——Panel(史上最全)
23、Winform从入门到精通(23)——FlowLayoutPanel(史上最全)
24、Winform从入门到精通(24)——GroupBox(史上最全)
25、Winform从入门到精通(25)——SplitContainer(史上最全)
26、Winform从入门到精通(26)——TabControl(史上最全)
27、Winform从入门到精通(28)——ToolTip(史上最全)
28、Winform从入门到精通(29)——MaskedTextBox(史上最全)
29、Winform从入门到精通(30)——MonthCalendar(史上最全)
30、Winform从入门到精通(31)——TreeView(史上最全)
更多控件持续更新中

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

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

相关文章

CAD DLL 15 crack增加了对SLDASM、FSAT

CAD DLL 15 crack增加了对SLDASM、FSAT 改进的3D: 提高了打开三维文件的速度。 提高了SAT、STEP、SLDPRT、X_T、X_B、OBJ格式的阅读能力。 增加了对SLDASM、FSAT、SAB、SMT、IPT、IFC格式的支持。 增加了导出为SAT、SAB、STL、OBJ格式的功能。 改进了SAT、STE…

系统错误 无法启动此程序,因为计算机中丢失MSVCP140_1.dll。尝试重新安装该程序已解决此问题

Qt系列文章目录 文章目录 Qt系列文章目录前言一、解决方法 前言 我在windows10系统,使用Qt5.15.2 打包命令:windeployqt.exe ImageManageSys.exe ,把ImageManageSys.exe 拷贝到windows7系统下,报错:ImageManageSys.ex…

红海云CEO孙伟解密智能化人力资源新范式

4月25日,由广州人力资源服务协会联合HRflag主办的“2023广州人力资源创新与科技展”在广州越秀国际会议中心举办,大会邀请红海云CEO孙伟出席并发表主题演讲,分享人力资源数字化的创新,实践以及思考。 红海云持续高增长的密码 在…

jsp内置对象

request 将要介绍request对象的作用范围及其常用的方法。用户每访问一个页面, 就会产生一个HTTP请求。这些请求中一般都包含了请求所需的参数值或者信息, 如果将request对象看作是客户请求的一个实例, 那么这个实例就包含了客户请求的所有数…

Nuxt3 布局layouts和NuxtLayout的使用

Nuxt3是基于Vue3的一个开发框架,基于服务器端渲染SSR,可以更加方便的用于Vue的SEO优化。 用Nuxt3 SSR模式开发出来的网站,渲染和运行速度非常快,性能也非常高,而且可SEO。 接下来我主要给大家讲解下Nuxt3的layouts布…

CF - Li Hua and Pattern

题意:给出了矩阵,里面每个位置分为蓝色或红色(数据上用1和0体现了),给出了一个操作次数,每次可以改变一个坐标的颜色,问能否通过操作使得图像旋转180度后不变。 解:很容易想到&…

修改DaemonSet 的/args参数后多个pod重启的顺序

理论 当您修改了DaemonSet的/args参数时,DaemonSet控制器会自动触发Pod的滚动更新。滚动更新的过程是逐个将旧的Pod删除并创建新的Pod,以确保应用程序的高可用性和稳定性。 在进行滚动更新时,DaemonSet控制器会按照以下步骤逐个重启Pod&…

flask+apscheduler+企业微信消息机器人推送

简介:APScheduler是一个轻量级的Python库,用于在后台运行定时任务和延迟任务。它可以轻松地安排任务并支持多种类型的触发器,例如固定间隔、日期/时间表达式、CRON表达式等。APScheduler还提供了多个后台调度器实现,例如基于线程池…

51单片机(五)LCD1602调试工具

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

4月24日~4月26日学习总结

一,刷题目情况,已经完成了8道题目,对于其中一些题目做一下题解。 这个题目的意思是找到的两个位置l和r,为了做到这个数组的l到r的子数组经过排序后,会变成输入的另外一个数组,这个题目的思路就是首先找到在…

【1G-6G】移动通信技术发展

移动通信技术发展 1G 早在1947年,贝尔实验室的科学家就提出了蜂窝通信的概念,在20世纪60年代对此进行了系统的实验。20世纪60年代末、70年代初开始出现了第一个蜂窝(Cellular)系统。蜂窝的意思是将一个大区域划分为若干个相邻的…

nodejs+vue 古诗词数字化分享平台

目录 第一章 绪论 5 1.1 研究背景 5 1.2系统研究现状 5 1.3 系统实现的功能 6 1.4系统实现的特点 6 1.5 本文的组织结构 6 第二章开发技术与环境配置 7 2.1nodejs语言简介 7 2.2vue技术 8 2.3 MySQL环境配置 8 2.4 MyEclipse环境配置 9 2.5 mysql数据库介绍 9 2.6 B/S架构 9 第…

31-基于GA遗传算法的车辆充电调度系统优化matlab程序

资源地址: 主要内容: 研究多辆电动汽车的充电调度问题,考虑某时段区域范围内有M 辆电动汽车发出充电请求时,周围有N 个充电桩可以提供充电位的调度情况。把当前调度时段电动汽车和充电桩的基本数据加载到调度中心,调度…

基于springboot“漫画之家”系统(附源码、设计文档)

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&…

Linux->管道和共享内存通信

目录 1 管道 1.1 管道是什么 1.1 匿名管道通信 1.2 父子进程通信 1.3 匿名管道实现多进程文件的写入读取 1.4 命名管道 2 共享内存 1 管道 1.1 管道是什么 管道顾名思义,他就是一个像是连通器一样的东西,原本不存在联系的东西之间建立起一定的关…

数据结构学习记录——平衡二叉树的调整(基本介绍、右单旋、左单旋、左右双旋、右左双旋、平衡因子的计算)

目录 基本介绍 右单旋 左单旋 左右双旋 右左双旋 平衡因子的计算 基本介绍 首先,平衡二叉树也是一棵二叉搜索树。 当我们在一棵平衡二叉树进行插入或者删除时,可能会把原来的平衡二叉树变得不平衡, 这个时候我们就需要进行调整了。…

《个人博客部署上线教程一》Halo搭建个人博客网站

Halo搭建个人博客网站 一、docker部署Halo 目前测试了两种方法安装Halo,第一种是使用Jar包安装:提供JAR包资源,不过因为使用jar包部署需要Java11才可以,我本机使用的是Java8,所以暂时不做调整。第二种是通过docker安装。 1.1 启…

MySQL的学习小结

SQL技巧总结 表连接要展示的最终结果放在前面的select语句里面 小表提取在前面,大表在后面连接 表连接实例 连接查询的时候,注意 on 后面跟的 and 条件是连接条件 ,如果要连接后查询 where 可以用 selecter.exam_id,count(distinct er.ui…

C++入门基础知识[博客园长期更新......]

0.博客园链接 博客的最新内容都在博客园当中,所有内容均为原创(博客园、CSDN同步更新)。 C知识点集合 1.命名空间 在往后的C编程中,将会存在大量的变量和函数,因为有大量的变量和函数,所以C的库会非常多。那么在C语言编程中&a…

宽带IPTV一线复用

宽带IPTV一线复用 1、前言 为了解决家里电视墙只预留了一个网口,IPTV无法与路由器共存的问题。 网络环境:中国联通 作者使用的路由器:云易家AX18C 2、光猫获取超管密码 黑龙江:hljcuadmin 重庆:cqadmin 浙江&…