我在C#中的winform(例如10)命名为comboBox1,coboBox2和comboBoxN上有一些comboBoxes。如何访问它们都在一个循环是这样的:如何在C#中循环遍历所有ComboBoxes控件?
for(int i = 0; i < 10; i++)
{
comboBox[i].text = "Hello world";
}
我在C#中的winform(例如10)命名为comboBox1,coboBox2和comboBoxN上有一些comboBoxes。如何访问它们都在一个循环是这样的:如何在C#中循环遍历所有ComboBoxes控件?
for(int i = 0; i < 10; i++)
{
comboBox[i].text = "Hello world";
}
您可以使用OfType
方法
var comboBoxes = this.Controls
.OfType<ComboBox>()
.Where(x => x.Name.StartsWith("comboBox"));
foreach(var cmbBox in comboBoxes)
{
cmbBox.Text = "Hello world";
}
形式有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
是一种形式):
List<ComboBox> comboBoxList = this.Controls.OfType<ComboBox>();
然后你只需要在它们之间迭代
foreach (ComboBox comboBox in comboBoxList)
{
comboBox.Text = "Hello world!";
}
这对我来说似乎非常有用,也很简单,但是'this'有问题。我如何使用它?它是form1吗? – UserMat
@UserMat是的,它应该是你的Form变量,如果你将它命名为form1,那么它应该是form1;) – TopinFrassi
我想你的意思'this.Controls [ “组合框” + i.ToString()]' –
@ Selman22:是的,谢谢!最近用了太多的VB ... – Heinzi