簡體   English   中英

單擊按鈕C#時選中多個復選框

[英]Check more than one checkbox upon clicking a button c#

我有例如:

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

我有32次了。 有沒有辦法讓concat字符串? 例如:

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

謝謝

盡管您不能完全按照自己的意願進行操作,但是可以選中或取消選中給定容器中的所有復選框。 例如,假設您有一個包含多個復選框的面板,稱為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屬性綁定到所需的值並進行更改即可。 您可以在Internet上的許多文章中找到與此有關的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM