在单击按钮时选中多个复选框c#

本文关键字:复选框 单击 按钮 | 更新日期: 2023-09-27 18:19:17

我有例如:

Checkbox1.IsChecked = true;
Checkbox2.IsChecked = true;
Checkbox3.IsChecked = true;

我做了32次。有没有办法有concat字符串?例如:

i = 1
while i < 32:
    ("Checkbox"+ (i)).IsChecked = true;
    i++

谢谢

在单击按钮时选中多个复选框c#

虽然您不能完全按照您的意愿行事,但您可以选中或取消选中给定容器中的所有复选框。例如,假设您有一个面板,其中包含许多复选框,称为pnlChecks。你可以这样写

foreach (var chkBox in pnlChecks.Controls.OfType<CheckBox>())
{
    chkBox.IsChecked = true;
}

有多种方法可以实现这一点。

  1. 将它们全部添加到通用List<>中,并像您提到的那样迭代它们。
  2. 使用反射并获得复选框控件并设置其值。

示例WinForms代码

    private List<CheckBox> checkboxes = new List<CheckBox>();
    public Form1()
    {
        InitializeComponent();
        FillCheckboxes();
    }
    private void CheckAll()
    {
        foreach (var chk in checkboxes)
        {
            chk.Checked = true;
        }            
    }
    private void FillCheckboxes()
    {
        foreach (Control c in this.Controls)
        {
            if (c is CheckBox)
            {
                checkboxes.Add(c as CheckBox);
            }
        }
    }
    private void button1_Click(object sender, EventArgs e)
    {
        CheckAll();
    }

示例WPF代码

    private List<CheckBox> checkboxes = new List<CheckBox>();
    public Window1()
    {
        InitializeComponent();
        checkboxes = FindVisualChildren<CheckBox>(main).ToList();
        CheckAll();
    }
    private void CheckAll()
    {
        foreach (var chk in checkboxes)
        {
            chk.IsChecked = true;
        }
    }
    public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
    {
        if (depObj != null)
        {
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
            {
                DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
                if (child != null && child is T)
                {
                    yield return (T)child;
                }
                foreach (T childOfChild in FindVisualChildren<T>(child))
                {
                    yield return childOfChild;
                }
            }
        }
    }

重要提示

对于WPF,建议的方法是使用数据绑定,而不是遍历控件并手动检查/取消检查它们。只需将IsChecked属性绑定到所需的值并更改它。您可以在互联网上的许多文章中找到更多关于这方面的信息。