C#递归获取窗体上所有TextBox的文本

本文介绍了一个用于遍历窗体上所有控件并收集文本框内文本的方法。通过递归方式检查每个控件及其子控件,最终将所有文本信息存储到一个字符串列表中。
        private void GetTextArray()
        {
            foreach (Control item in this.Controls)
                GetText(item);
        }

        List<string> TextArray = new List<string>();
        private void GetText(Control ctrl)
        {
            if (ctrl.HasChildren)
                foreach (Control item in ctrl.Controls)
                    GetText(item);
            else
                if (ctrl is TextBox)
                    TextArray.Add(ctrl.Text);
        }




C#中,当窗体载入时清空所有`TextBox`和`ComboBox`内容可以通过以下几种方法实现: ### 方法一:封装类进行清空 可以创建一个`Clear`类,在窗体的`Load`事件中调用该类的构造函数来清空控件内容。 ```csharp public class Clear { public Clear(Form form, Panel panel) { foreach (Control cl in form.Controls) { if (cl is ComboBox) { ComboBox cob = cl as ComboBox; cob.SelectedIndex = -1; } else if (cl is TextBox) { TextBox tb = cl as TextBox; tb.Text = string.Empty; } } // 清空的是容器上的控件 foreach (Control cl in panel.Controls) { if (cl is TextBox) { cl.Text = string.Empty; } else if (cl is ComboBox) { ComboBox cob = cl as ComboBox; cob.SelectedIndex = -1; } } } } // 在窗体的Load事件中调用 private void Form1_Load(object sender, EventArgs e) { Clear clear = new Clear(this, panel1); // 假设存在一个名为panel1的Panel控件 } ``` ### 方法二:编写方法批量清空 编写一个`clear_from`方法,在窗体的`Load`事件中调用该方法。 ```csharp public void clear_from() { foreach (Control ctl in this.Controls) { if (ctl is TextBox) { ctl.Text = string.Empty; } else if (ctl is ComboBox) { ComboBox com1 = ctl as ComboBox; com1.SelectedIndex = -1; } } } // 在窗体的Load事件中调用 private void Form1_Load(object sender, EventArgs e) { clear_from(); } ``` ### 方法三:直接在`Load`事件中清空 直接在窗体的`Load`事件中编写代码来清空`TextBox`和`ComboBox`内容。 ```csharp private void Form1_Load(object sender, EventArgs e) { foreach (Control c in this.Controls) { if (c is TextBox) { TextBox tb = (TextBox)c; tb.Text = string.Empty; } else if (c is ComboBox) { ComboBox cob = (ComboBox)c; cob.SelectedIndex = -1; } } } ``` ### 方法四:递归遍历清空 编写一个递归方法`findControls`,在窗体的`Load`事件中调用该方法。 ```csharp public void findControls(Control control) { foreach (Control c in control.Controls) { string cType = c.GetType().Name; switch (cType) { case "TextBox": ((TextBox)c).Text = ""; break; case "ComboBox": ((ComboBox)c).Text = ""; break; } findControls(c); // 递归调用 } } // 在窗体的Load事件中调用 private void Form1_Load(object sender, EventArgs e) { findControls(this); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值