清除所有TextBoxes文本[重复]

问题描述 投票:-3回答:4

我有一个包含许多textBox的tabControl,我想添加一个按钮来一次清除所有textBoxes的文本,我尝试了此代码:

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

但是此代码不起作用,我收到此错误消息:

无法将类型为'System.Windows.Forms.Button'的对象转换为类型为'System.Windows.Forms.TextBox

此代码有什么问题?

c# textbox
4个回答
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);
}

4
投票

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

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

OfType

2
投票

您在foreach循环中获得了所有控件(不仅是文本框)

尝试这样的事情:

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

0
投票

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

foreach (Control t in tabControl1.SelectedTab.Controls)
{
    if(t is TextBox)
        ((TextBox)t).Clear();
}
© www.soinside.com 2019 - 2024. All rights reserved.