【问题标题】:How to access dynamically created controls in C#?如何在 C# 中访问动态创建的控件?
【发布时间】:2017-12-01 19:55:06
【问题描述】:

我已经动态创建了复选框。我有一个选项“全选”。如何在 C# 中选择所有动态创建的复选框?

如何选中所有已创建的动态复选框?

protected void chkbox_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chkBtn = new CheckBox();
    chkBtn = sender as CheckBox;
    selectedTypeId.Add(Convert.ToInt16(chkBtn.Name));
    foreach(int id in selectedTypeId)
    {
        Console.WriteLine(id);       
    }
}

【问题讨论】:

  • 您是否将动态创建的复选框保存在列表或数组或其他任何内容中?如果没有,您可以按名称查找控件或遍历表单的Controls 属性并以其他方式查找它们。
  • 将您创建的每个CheckBox 添加到List<CheckBox> 并遍历列表(取消)检查每个。
  • @DrNachtschatten 你能举个例子吗?
  • @AparajitaSinha 将其发布为答案。

标签: c# winforms checkbox


【解决方案1】:

声明一个全局复选框列表:

List<CheckBox> boxes;

然后在你的程序开始实例化它。

boxes = new List<CheckBox>();

每次动态添加 CheckBox 时,也将其添加到列表中。

CheckBox chkBtn = new CheckBox();
boxes.Add(chkBtn);

如果您想一次检查所有内容,请使用循环遍历列表。

foreach(CheckBox box in boxes)
    box.Checked = true;

【讨论】:

    【解决方案2】:

    您可以像这样获取控件的所有复选框:

    var checkBoxes = this.Controls.OfType<CheckBox>();
    checkBoxes.ToList()?.ForEach(x=>x.Checked = true);
    

    但通常您会将所有复选框放在 groupbox 中(从 ux 角度来看)

    groupBox.Controls.Add(checkBox);
    

    然后从 groupbox 中获取它们:

    var checkBoxes =  groupBox.Controls.OfType<CheckBox>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-28
      • 2012-11-03
      • 2010-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多