我有一个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
此代码有什么问题?
答案 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();
}
}
}