在c#winform应用程序中插入/保存/提交数据后,空文本框控件

在c#winform应用程序中插入/保存/提交数据后,空文本框控件,c#,.net,winforms,textbox,C#,.net,Winforms,Textbox,我需要清空所有的文本框控件后,保存按钮被点击,但用户。我有大约10个。如何同时从它们中清除文本。我只知道: textbox1.Text=""; 但是,如果我这样做,那么我需要对表单上的文本框控件的数量重复这个操作,这将是一个人工任务,而不是程序员 请引导。试试这个 foreach(TextBox textbox in this.Controls.OfType<TextBox>()) { textbox.Text = string.Empty; } 如果表单上的所有文本框都没

我需要清空所有的文本框控件后,保存按钮被点击,但用户。我有大约10个。如何同时从它们中清除文本。我只知道:

textbox1.Text="";
但是,如果我这样做,那么我需要对表单上的文本框控件的数量重复这个操作,这将是一个人工任务,而不是程序员

请引导。

试试这个

foreach(TextBox textbox in this.Controls.OfType<TextBox>())
{
   textbox.Text = string.Empty;
}

如果表单上的所有文本框都没有面板或组框,则可以执行以下操作:

foreach (var conrol in Controls)
{
    var textbox = conrol as TextBox;
    if (textbox != null)
        textbox.Clear();
}

如果您有一个面板,请改用
panel.Controls

您可以使用以下文章中描述的Linq API:

这允许您将Linq应用于Windows窗体上的XML样式查询。以下内容将清除作为“this”的后代的所有TextBox控件:

foreach(TextBox textbox in this.Descendants<TextBox>()
                               .Cast<TextBox>())
{
   textbox.Text = string.Empty;
}
foreach(此.subjections()中的文本框)
.Cast())
{
textbox.Text=string.Empty;
}

如果您想清除表单上的所有内容,我建议使用一对实用函数,例如:

public static void ClearAllControls(Control.ControlCollection controls)
{
    foreach (var control in controls)
        ClearAllControls(control);
}

public static void ClearAllControls(Control control)
{           
    var textBox = control as TextBox
    if (textBox != null)
    {
        textBox.Text = null;
        return;
    }

    var comboBox = control as ComboBox;
    if (comboBox != null)
    {
        comboBox.SelectedIndex = -1;
        return;
    }

    // ...repeat blocks for other control types as needed

    ClearAllControls(control.Controls);
}
调用第一个方法,传递表单的控件集合,它将递归地向下钻取面板、组等,清除它知道的所有控件。您必须为每个不同的控件类型添加一个块,但至少只需添加一次。这是一种蛮力,但它不是那种最终在循环中运行的代码,而且运行速度非常快


最后一行进行递归,只有在当前正在处理的控件尚未被证明是已知类型之一的情况下,才会到达该行,因此您不必担心意外地“钻入”文本框之类的内容,寻找不存在的子控件。

这是否会递归到面板、选项卡控件,用户控件等?不,这只是在表单控件中迭代要递归,需要使用像Linq到WindowsForms这样的API
public static void ClearAllControls(Control.ControlCollection controls)
{
    foreach (var control in controls)
        ClearAllControls(control);
}

public static void ClearAllControls(Control control)
{           
    var textBox = control as TextBox
    if (textBox != null)
    {
        textBox.Text = null;
        return;
    }

    var comboBox = control as ComboBox;
    if (comboBox != null)
    {
        comboBox.SelectedIndex = -1;
        return;
    }

    // ...repeat blocks for other control types as needed

    ClearAllControls(control.Controls);
}