[英]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;
}
有多種方法可以實現此目的。
List<>
並像您提到的那樣遍歷它們。 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();
}
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.