我想在winform中清除某些组框中的所有文本框



我有一个Windows窗体,它有一些GroupBox,我想将Groupboxes中的所有textbox.text设置为0。我写了这个代码,但没有工作。

foreach (var TTX in this.Controls)
{
if (TTX is TextBox)
((TextBox) TTX).Text = (0).ToString(format: "c0");
}

如果要处理的控件在另一个控件容器中,那么上面代码中的直接方法就无法工作。GroupBox是一个控件容器。因此,您需要枚举所有的组框和组框中的控件。但是,如果您使用OfType枚举器来提取代码,首先从表单的控件集合中提取所有分组框,然后每个分组框使用相同的技术仅提取当前分组框的控件集合所包含的文本框,则可以简化很多代码。如果您看到代码不再需要复杂的检查和强制转换来使用TextBox或GroupBox强类型变量,那么优势就显而易见了。

foreach (var grpBox in this.Controls.OfType<GroupBox>())
{
foreach(var TTX in grpBox.Controls.OfType<TextBox>())
TTX.Text = 0.ToString(format: "c0");
}

最新更新