要清除我的文本框,我在表单中使用以下代码:
foreach (Control c in this.Controls)
{
if (c is TextBox || c is RichTextBox)
{
c.Text = "";
}
}
但现在我的文本框位于TabControl中。如何对文本框运行相同类型的检查,如果控件是文本框,则将值设置为“”。我已经尝试过使用:
foreach(Control c in tabControl1.Controls)
但是这没用。
答案 0 :(得分:13)
使用此
foreach (TabPage t in tabControl1.TabPages)
{
foreach (Control c in t.Controls)
{
if (c is TextBox || c is RichTextBox)
{
c.Text = "";
}
}
}
答案 1 :(得分:5)
您也可以使用Enumerable.OfType
。 TextBox
和RichTextBox
是唯一从TextBoxBase
继承的控件,这是您要查找的类型:
var allTextControls = tabControl1.TabPages.Cast<TabPage>()
.SelectMany(tp => tp.Controls.OfType<TextBoxBase>());
foreach (var c in allTextControls)
c.Text = "";
答案 2 :(得分:1)
tabControl1.Controls无效,因为标签控件包含TabPage
。您需要定位正确的页面。
或者,您可以构建一个递归方法来执行此操作:
static void RecurseClearAllTextBoxes(Control parent)
{
foreach (Control control in parent.Controls)
{
if (control is TextBox || control is RichTextBox)
control.Text = String.Empty;
else
RecurseClearAllTextBoxes(control);
}
if (parent is TabControl)
{
foreach (TabPage tabPage in ((TabControl)parent).TabPages)
RecurseClearAllTextBoxes(tabPage);
}
}
答案 3 :(得分:1)
Limpiar Controles
foreach (Control C in GB.Controls)
{
if(C is TextBox)
{
(C as TextBox).Clear();
}
if(C is DateTimePicker)
{
(C as DateTimePicker).Value = DateTime.Now;
}
if (C is ComboBox)
{
(C as ComboBox).SelectedIndex = 0;
}
}