将控件数组等同于现有控件

本文关键字:控件 数组 等同于 | 更新日期: 2023-09-27 18:28:03

我尝试了一些类似的东西:

RadioButton[] diff = new RadioButton[10];
for (int i = 0; i < 10; ++i)
{
    diff[i] = (RadioButton)Control("rad_D" + i.ToString());
}

显然不起作用。但正确的方法是什么?

将控件数组等同于现有控件

编辑:好的,所以您正在寻找已经存在的单选按钮,在这种情况下,请使用FindName。类似这样的东西:

RadioButton[] diff = new RadioButton[10];
for (int i = 0; i < 10; ++i)
{
    diff[i] = someparentControl.FindName("rad_D" + i.ToString()) as RadioButton;
}

您需要一个父控件,它可以只是窗口本身,因为它将递归地搜索匹配的名称。

试试这个,如果单选按钮是面板的直接子级,如网格、StackPanel等,那么你可以这样做:

var buttons = grid.Children.OfType<RadioButton>().
    Where(rb => rb.Name.StartsWith("rad_D").ToList();

获取列表,或者如果您真的想要一个数组

var buttons = grid.Children.OfType<RadioButton>().
    Where(rb => rb.Name.StartsWith("rad_D").ToArray();

您可以使用本文在WPF窗口中按类型查找所有控件,其中有几种方法可以查找特定类型的所有控件。