清除所有TextBox文本

时间:2014-12-23 13:21:43

标签: c# textbox clear

我有一个tabControl包含很多textBoxes,我想添加一个按钮来一次清除所有textBoxes的文本,我试过这段代码:

private void ClearButton_Click(object sender, EventArgs e)
{
    foreach (TextBox t in tabControl1.SelectedTab.Controls)
    {
        t.Clear();
    }
}

但是这段代码不起作用,我收到了这条错误信息:

  

无法转换类型为#System.SWindows.Forms.Button'的对象键入' System.Windows.Forms.TextBox

此代码有什么问题?

4 个答案:

答案 0 :(得分:4)

您正在尝试遍历每个Control,其中一些不是TextBox控件。

您可以使用OfType来指定您感兴趣的控件,而不是:

foreach (TextBox t in tabControl1.SelectedTab.Controls.OfType<TextBox>())
{
    t.Clear();
}

答案 1 :(得分:2)

你获得了foreach循环中的所有控件(不仅仅是TextBoxes)

尝试这样的事情:

foreach (Control t in tabControl1.SelectedTab.Controls)
{
    if(t is TextBox)
        ((TextBox)t).Clear();
}

答案 2 :(得分:2)

试试这段代码:

void ClearTextBoxes(Control parent)
{
    foreach (Control child in parent.Controls)
    {
        TextBox textBox = child as TextBox;
        if (textBox == null)
            ClearTextBoxes(child);
        else
            textBox.Text = string.Empty;
    }
}

private void ClearButton_Click(object sender, EventArgs e)
{
    ClearTextBoxes(tabControl1.SelectedTab);
}

答案 3 :(得分:0)

并非所有控件都是文本框。这样做:

private void ClearButton_Click(object sender, EventArgs e)
{
    foreach (var control in tabControl1.SelectedTab.Controls)
    {
        if(control is TextBox)
        {
             TextBox t = (TextBox)control;
             t.Clear();
             // or short:
             // ((TextBox) control).Clear();
        }
    }
}