C# 新手
我正在尝试清除 winform 中的所有文本框,此代码片段来自:
做这项工作,但有人可以向我解释它在做什么吗?
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);
}
Action<Control.ControlCollection> func = null;
正在声明一个将 a 作为参数的委托Control.ControlCollection
。
func = (controls) => {... }
为委托分配一个匿名方法体,该方法体在执行{...}
时执行内部操作。
func(Controls);
执行委托,传入Controls
包含表单中所有顶级控件的表单集合。
匿名方法的方法体枚举传入的 ControlCollection 中的控件,并清除所有文本框。对于不是TextBox
控件的控件,它会递归到自身并检查控件包含的控件。这样,如果有一个GroupBox
或某个其他控件容器,则会在这些控件的子项中搜索 TextBox。
通过执行以下操作,可以更简单地重写(避免委托和匿名方法):
private void ClearTextBoxes()
{
ClearTextBoxes(Controls);
}
private void ClearTextBoxes(Control.ControlCollection controls) {
foreach (Control control in controls)
if (control is TextBox)
(control as TextBox).Clear();
else
ClearTextBoxes(control.Controls);
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句