前言
在 WinForm 开发中,经常会遇到需要对大量控件,如主窗体上的一百多个TextBox,进行初始化赋值的场景。例如,将这些TextBox的Text属性都赋值为"1"。对于WinForm开发新手来说,可能会选择在界面上或代码中逐个为这些TextBox的Text属性赋值。
当修改的TextBox数量较少时,这种方法似乎还能接受。然而,当需要修改的TextBox数量达到五十多个时,大家可能会感到麻烦,甚至抱怨需求的不合理性。
本文将详细介绍常用的两种解决这一赋值需求的方法,并进一步阐述更为高效、正确的解决策略,帮助大家轻松应对大量控件赋值的问题。
正文
首先展示初学者的两种搞定这个赋值需求的方法
初学者常用的错误方法一
在设计器阶段在界面上给每个TextBox赋值为1,如下图:(这里用10个TextBox举例)
该方法需要对每个控件依次赋值,可能有人说我先在界面给一个TextBox赋值,然后我直接复制、粘贴,这样变成两个,然后两个复制粘贴变成4个,这样也挺快,可是如果当你复制粘贴完了,结果有人告诉你,我要把这个"1"变成"10",你是不是傻眼了?
难道重新搞一遍吗?很显然这个方法不是一个好方法,当控件达到几百个,并且初始化值随时可能发生变化的情况下,根本玩不动啊!
初学者常用的错误方法二
在代码中给个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#中的一个知识叫"递归",递归就是用于需要嵌套访问的场合,如果你不懂递归的原理也没关系,就照抄模板就可以了。
总结
在 WinForm 开发中,面对众多控件的赋值任务,新手常感头疼。但掌握正确方法后,便能游刃有余。
本文介绍了常用的两种赋值方法,并分享了高效解决策略。从此,再多控件也不怕,轻松实现"控件心中过,界面自然成"的开发境界。
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。
也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!
优秀是一种习惯,欢迎大家留言学习!
作者:c#上位机
出处:blog.csdn.net/qq_34059233/article/details/130395646
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!