我的应用程序中有一个包含子控件的组框。(如附图所示)。我想枚举所有文本框,以使用简单的 foreach 循环执行一些验证。
该文件大纲将给出控件外壳的一个大概的概念
foreach (Control control in grpBxTargetSensitivity.Controls)
{
if (control is FlowLayoutPanel && control.HasChildren)
{
foreach (Control ctrl in control.Controls)
{
if (ctrl is Panel && ctrl.HasChildren)
{
foreach (Control tbox in ctrl.Controls)
{
if (tbox is TextBox)
{
TextBox textbox = tbox as TextBox;
validData &= !string.IsNullOrWhiteSpace(textbox.Text);
}
}
}
}
}
}
我的问题是,有没有比上述方法更好的方法(可能通过 LINQ)来获取所有控件,包括面板内的文本框?
我不知道这是否更好..是否更容易阅读是一个观点问题:
var validData
= grpBxTargetSensitivity.Controls.OfType<FlowLayoutPanel>()
.SelectMany(c => c.Controls.OfType<Panel>())
.SelectMany(c => c.Controls.OfType<TextBox>())
.All(textbox => !string.IsNullOrWhiteSpace(textbox.Text));
这将抓取 GroupBox 中所有 FlowLayoutPanel 中所有面板内的所有 TextBox,并返回true
if all这些文本框中有一个有值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)