我有一个包含4个以上组框的表单。每个组框都有一些文本字段。我想要的是从仅启用的组框中获取值。所以我的问题是:是否可以扫描所有可用的组框以查明是否已启用其中任何一个组,如果其中一个已启用,则只将该组中的值保存并保存到数据库中?
答案 0 :(得分:0)
您可以像这样扫描控件:
GroupBox gBox = this.Controls.OfType<GroupBox>().FirstOrDefault(c => c.Enabled);
List<string> values = new List<string>();
if(gBox != null)
{
foreach(var txtBox in gBox.Controls.OfType<TextBox>())
{
values.Add(txtBox.Text);
}
}
请注意,这假设GroupBoxes
直接添加到表单,而不是任何面板。此外,TextBoxes
会直接添加到GroupBox
,而不会添加其他面板。
或者,您可以一次性完成:
List<string> result = this.Controls.OfType<GroupBox>()
.Where(gBox => gBox.Enabled)
.SelectMany(gBox => gBox.Controls.OfType<TextBox>())
.Select(txtBox => txtBox.Text).ToList();
答案 1 :(得分:0)
您可以尝试使用 Linq ;提供GroupBox
es 直接直接在表单上,TextBox
感兴趣的是直接在GroupBox
es:
string[] values = Controls
.OfType<GroupBox>()
.Where(box => box.Enabled)
.SelectMany(box => box
.Controls
.OfType<TextBox>()
.Select(tb => tb.Text))
.ToArray();