【问题标题】:How can I iterate all ComboBoxes controls with a loop in C#?如何在 C# 中使用循环迭代所有 ComboBoxes 控件?
【发布时间】:2014-09-29 13:38:35
【问题描述】:

我在一个名为 C# 的 winform(例如 10)上有一些组合框:comboBox1、coboBox2 和 comboBoxN。如何在这样的 for 循环中访问所有这些:

for(int i = 0; i < 10; i++)
{
    comboBox[i].text = "Hello world";
}

【问题讨论】:

    标签: c# for-loop controls


    【解决方案1】:

    你可以使用OfType方法

    var comboBoxes =  this.Controls
                      .OfType<ComboBox>()
                      .Where(x => x.Name.StartsWith("comboBox"));
    
    foreach(var cmbBox in comboBoxes)
    {
        cmbBox.Text = "Hello world";
    }
    

    【讨论】:

      【解决方案2】:

      您可以通过这种方式访问​​表单中的所有组合框(假设this 是一个表单):

           List<ComboBox> comboBoxList = this.Controls.OfType<ComboBox>();
      

      然后你只需要遍历它们

           foreach (ComboBox comboBox in comboBoxList)
           {
              comboBox.Text = "Hello world!";
           }
      

      【讨论】:

      • 这对我来说似乎非常有用和简单,但是“this”有问题。我该如何使用它?是form1吗?
      • @UserMat 是的,它应该是你的 Form 变量,如果你把它命名为 form1 那么它应该是 form1 ;)
      【解决方案3】:

      表单有一个Controls property,它返回所有控件的集合,其中can be indexed by the name of the control

      for(int i = 0; i < 10; i++)
      {
          var comboBox = (ComboBox)this.Controls["comboBox" + i.ToString()];
          comboBox.text = "Hello world";
      }
      

      【讨论】:

      • 我想你的意思是this.Controls["comboBox" + i.ToString()]
      猜你喜欢
      • 2023-04-10
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 2022-12-08
      • 2015-10-27
      相关资源
      最近更新 更多