查找多种类型的所有控件?

时间:2014-05-04 21:28:20

标签: c# winforms ienumerable

我试图在C#程序中找到所有控件,这些控件都是单选按钮或复选框。另外,我还希望找到一个特定的文本框。我只是用它来处理单选按钮 - 如果我用Checkboxes重复IEnumerable行,它告诉我在这个范围内已经定义了一个名为buttons的局部变量。谢谢你的帮助。

IEnumerable<RadioButton> buttons = this.Controls.OfType<RadioButton>();

foreach (var Button in buttons)
{
    //Do something
}

2 个答案:

答案 0 :(得分:4)

您可以使用公共基类Control来完成您尝试执行的操作:

IEnumerable<Control> controls = this.Controls
    .Cast<Control>()
    .Where(c => c is RadioButton || c is CheckBox || (c is TextBox && c.Name == "txtFoo"));

foreach (Control control in controls)
{
    if (control is CheckBox)
        // Do checkbox stuff
    else if (control is RadioButton)
        // DO radiobutton stuff
    else if (control is TextBox)
        // Do textbox stuff
}

答案 1 :(得分:0)

您需要为复选框使用不同的变量名称。

IEnumerable<RadioButton> buttons = this.Controls.OfType<RadioButton>();
IEnumerable<CheckBox> checkboxes = this.Controls.OfType<CheckBox>();

如果它是一个众所周知的名字,你也应该只能按名称抓取你的文本框。