我试图在C#程序中找到所有控件,这些控件都是单选按钮或复选框。另外,我还希望找到一个特定的文本框。我只是用它来处理单选按钮 - 如果我用Checkboxes重复IEnumerable行,它告诉我在这个范围内已经定义了一个名为buttons的局部变量。谢谢你的帮助。
IEnumerable<RadioButton> buttons = this.Controls.OfType<RadioButton>();
foreach (var Button in buttons)
{
//Do something
}
答案 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>();
如果它是一个众所周知的名字,你也应该只能按名称抓取你的文本框。