我尝试过类似的事情:
RadioButton[] diff = new RadioButton[10];
for (int i = 0; i < 10; ++i)
{
diff[i] = (RadioButton)Control("rad_D" + i.ToString());
}
显然不起作用。但是正确的方法是什么?
答案 0 :(得分:0)
编辑:好的,所以你正在寻找已经存在的RadioButtons,在这种情况下,使用FindName。像这样:
RadioButton[] diff = new RadioButton[10];
for (int i = 0; i < 10; ++i)
{
diff[i] = someparentControl.FindName("rad_D" + i.ToString()) as RadioButton;
}
您需要一个父控件,它可以只是窗口本身,因为它会递归搜索匹配的名称。
答案 1 :(得分:0)
试试这个,如果单选按钮是 Panel 的直接子项,例如Grid,StackPanel等,那么你可以这样做:
var buttons = grid.Children.OfType<RadioButton>().
Where(rb => rb.Name.StartsWith("rad_D").ToList();
获取List,或者如果你真的想要一个数组
var buttons = grid.Children.OfType<RadioButton>().
Where(rb => rb.Name.StartsWith("rad_D").ToArray();
你可以使用这篇文章Find all controls in WPF Window by type,它有几种方法可以找到特定类型的所有控件。