我使用.NET framework 4。
在我的表单中,我有41个文本框。
我尝试过这段代码:
private void ClearTextBoxes()
{
Action<Control.ControlCollection> func = null;
func = (controls) =>
{
foreach (Control control in controls)
if (control is TextBox)
(control as TextBox).Clear();
else
func(control.Controls);
};
func(Controls);
}
这段代码:
private void ClearTextBoxes(Control.ControlCollection cc)
{
foreach (Control ctrl in cc)
{
TextBox tb = ctrl as TextBox;
if (tb != null)
tb.Text = String.Empty;
else
ClearTextBoxes(ctrl.Controls);
}
}
这对我来说仍然不起作用。
当我尝试使用此代码TextBoxName.Text = String.Empty;
清除时,文本框成功清除了一个文本框,仍然有40个文本框。
我该如何解决这个问题?
修改
我加入了这个:
private void btnClear_Click(object sender, EventArgs e)
{
ClearAllText(this);
}
void ClearAllText(Control con)
{
foreach (Control c in con.Controls)
{
if (c is TextBox)
((TextBox)c).Clear();
else
ClearAllText(c);
}
}
但仍无效。
修改
我使用了面板和分离器。
答案 0 :(得分:14)
void ClearAllText(Control con)
{
foreach (Control c in con.Controls)
{
if (c is TextBox)
((TextBox)c).Clear();
else
ClearAllText(c);
}
}
要使用上述代码,只需执行以下操作:
ClearAllText(this);
答案 1 :(得分:1)
你试过吗
private void RecursiveClearTextBoxes(Control.ControlCollection cc)
{
foreach (Control ctrl in cc)
{
TextBox tb = ctrl as TextBox;
if (tb != null)
tb.Clear();
else
RecursiveClearTextBoxes(ctrl.Controls);
}
答案 2 :(得分:0)
第1步:您需要浏览Controls
中的所有Form
。
第2步:如果Control
为TextBox
,则调用Clear()
函数。
试试这个:
void clearText(Control control)
{
foreach (Control c in control.Controls)
{
if (c is TextBox)
((TextBox)c).Clear();
else
clearText(c);
}
}
public void ModifyControl<T>(Control root, Action<T> action) where T : Control
{
if (root is T)
action((T)root);
// Call ModifyControl on all child controls
foreach (Control control in root.Controls)
ModifyControl<T>(control, action);
}
private void button5_Click(object sender, System.EventArgs e)
{
clearText(this);
ModifyControl<TextBox>(splitContainer1, tb => tb.Text = "");
}
答案 3 :(得分:0)
这对我自己很有效。
void ClearTextBoxes(DependencyObject dObject)
{
TextBox tb = dObject as TextBox;
if (tb != null)
tb.Text = null;
foreach (DependencyObject obj in dObject.GetChildObjects())
ClearTextBoxes(obj);
}
然后根据需要简单地调用它,例如,我正在清除TabControl中的所有TextBox,其中还包括不在屏幕上的选项卡:
ClearTextBoxes(CustomerTabControl);