【发布时间】:2013-12-09 15:43:22
【问题描述】:
我有几个文本框用于输入,然后有几个文本框用于结果。 有什么快捷方式可以清除表单上的所有条目吗?
例如aTextBox.Clear();
【问题讨论】:
-
我知道的唯一方法是递归遍历控件树,检查类型并清除控件。 stackoverflow.com/questions/4811229/…
我有几个文本框用于输入,然后有几个文本框用于结果。 有什么快捷方式可以清除表单上的所有条目吗?
例如aTextBox.Clear();
【问题讨论】:
如果所有文本框都是表单的直接子级,则可以使用 LINQ:
yourForm.Controls.OfType<TextBox>().ToList().ForEach(textBox => textBox.Clear());
【讨论】:
您将需要循环所有表单控件并检查类型是否为文本框,然后 .Text = string.empty
【讨论】:
var cntrlCollections = GetAll(this,typeof(TextBox));
foreach (Control ctrl in cntrlCollections)
{
if (ctrl is TextBox)
{
ctrl.Text = " ";
}
}
public IEnumerable<Control> GetAll(Control control, Type type)
{
var controls = control.Controls.Cast<Control>();
return controls.SelectMany(ctrl=>GetAll(ctrl,type)).Concat(controls).Where
(c=>c.GetType() ==type);
}
在单击事件中像上面一样调用此函数以清除所有文本框。希望这对您有所帮助。
【讨论】:
评论 Frederic - 您需要使用 ActiveForm yourform.ActiveForm.Controls. ...。
因为yourform.Controls. ... 丢了一个错误:
An object reference is required for the non-static field, method, or property 'System.Windows.Forms.Control.Controls.get
申请VS2012Express
【讨论】: