如果组合框文本更改,则重置表单中的所有文本框

时间:2017-02-13 14:02:49

标签: c# winforms

我有Form,当我从ComboBox中选择一个值时,下面的所有TextBox es(大约150)和Label都会随着我的信息而改变从阅读日志中获得。

问题在于某些日志不具备所有信息,因此该字段应保持为空。问题是当TextBox之前已包含信息时,当我更改ComboBox时,此信息不会重置。

我尝试使用Button清除所有TextBox es,但我有160个。

private void button2_Click_1(object sender, EventArgs e)
{
    textbox1.Clear();// do it for all the textboxs
}

2 个答案:

答案 0 :(得分:1)

您可以使用:

public void ResetAllTextBoxes()
{
    // Iterate over all Controls in the current form
    foreach (Control control in this.Controls)
        // If the control is a TextBox ...
        if (control is TextBox)
            // ... clear its text
            (control as TextBox).Text = "";
}

答案 1 :(得分:1)

除了Steve's回答之外,如果TextBox嵌套在其他容器中(例如GroupBox),而不是直接嵌入Form,则必须递归到子容器中:

private void ClearTextBoxes(Control container)
{
    foreach(TextBox textBox in container.Controls.OfType<TextBox>())
        textBox.Clear();
    foreach(Control control in container.Controls)
        ClearTextBoxes(control);
}

并称之为:

private void button2_Click_1(object sender, EventArgs e)
{
    ClearTextBoxes(this); // "this" being your Form
}