我在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