LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【C#】如何根据Winform窗体中的控件名称批量快速获取并清除其中的文本内容?

admin
2025年7月28日 10:4 本文热度 76

:【C#】如何根据Winform窗体中的控件名称批量快速获取并清除其中的文本内容?

我的C# Winform程序中有50个文本控件:txtRoll1、txtRoll2、txtRoll3、、、、、一直到txtRoll50,我需要一次性清空这50个控件值:txtRoll1.Text="";txtRoll2.Text="";、、、,有没有简单的方法,例如用for(int tmpNum=1;tmpNum<51;tmpNum++){}的方式迅速完成这个任务?

 

在C# WinForms中,可以使用循环结合Controls.Find()方法动态查找控件来实现。以下是两种推荐方法:

方法1:直接通过控件名称查找(推荐)

for (int i = 1; i <= 50; i++)

{

    // 构造控件名称

    string controlName = "txtRoll" + i;

    

    // 在窗体控件集合中查找(包含所有子容器)

    Control[] foundControls = this.Controls.Find(controlName, true);

    

    // 如果找到且是文本框,则清空内容

    if (foundControls.Length > 0 && foundControls[0] is TextBox)

    {

        (foundControls[0] as TextBox).Text = string.Empty;

    }

}

方法2:预先存储控件到数组(高效,适合频繁操作)

// 在窗体类中声明文本框数组

private TextBox[] txtRolls;


// 在Form_Load中初始化数组

private void Form1_Load(object sender, EventArgs e)

{

    txtRolls = new TextBox[50];

    for (int i = 1; i <= 50; i++)

    {

        txtRolls[i-1] = this.Controls.Find("txtRoll" + i, true)[0] as TextBox;

    }

}


// 清空所有文本框

private void ClearTextBoxes()

{

    foreach (var txt in txtRolls)

    {

        txt.Text = string.Empty;

    }

}

关键说明:

Controls.Find()参数

  • 第一个参数:控件名称

  • 第二个参数:true表示搜索所有子容器(如Panel/GroupBox)

错误处理:实际项目中建议添加异常处理

性能

  • 方法1每次操作需要查找控件(约1-50ms)

  • 方法2初始化后直接访问(最快,推荐频繁操作时使用)

设计建议

// 可在设计器代码中初始化(替代手动创建50次)

private void InitializeRollTextboxes()

{

    for (int i = 1; i <= 50; i++)

    {

        var txt = new TextBox { Name = "txtRoll" + i };

        // 设置位置等属性...

        this.Controls.Add(txt);

    }

}

注意事项

  • 确保控件名称严格匹配(无拼写错误)

  • 如果文本框嵌套在容器中,必须使用searchAllChildren: true

  • 大型项目建议使用MVVM模式或数据绑定替代直接操作控件

根据实际需求选择方法,对于50个控件量级,两种方法性能差异可忽略不计。

批量快速读取控件值方法如下:

string tmpName = "";

int tmpRoll = 0;

for (int i = 1; i <= 9; i++)

{

    // 构造控件名称

    string controlName0 = "txtName" + i;

    string controlName1 = "txtRoll" + i;


    // 在窗体控件集合中查找(包含所有子容器)

    Control[] foundControls0 = this.Controls.Find(controlName0, true);


    // 如果找到且是文本框,则获取内容

    if (foundControls0.Length > 0 && foundControls0[0] is TextBox)

    {

        tmpName=foundControls0[0].Text;

    }


    // 在窗体控件集合中查找(包含所有子容器)

    Control[] foundControls1 = this.Controls.Find(controlName1, true);


    // 如果找到且是数字框,则获取内容

    if (foundControls1.Length > 0 && foundControls1[0] is NumericUpDown)

    {

        tmpRoll = Convert.ToInt32(foundControls1[0].Text);

    }

}


该文章在 2025/7/28 15:16:26 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved