找到启用哪个组框,哪个不启用

时间:2016-07-21 10:42:21

标签: c# winforms

我有一个包含4个以上组框的表单。每个组框都有一些文本字段。我想要的是从仅启用的组框中获取值。所以我的问题是:是否可以扫描所有可用的组框以查明是否已启用其中任何一个组,如果其中一个已启用,则只将该组中的值保存并保存到数据库中?

2 个答案:

答案 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();