c# - sentencia - que es if else en programacion
¿Cómo puedo iterar todos los controles de ComboBoxes con un bucle en C#? (3)
Tengo algunos comboBoxes en un winform (por ejemplo 10) en C # named: comboBox1, coboBox2 y comboBoxN. ¿Cómo puedo acceder a todos ellos en un ciclo for como este?
for(int i = 0; i < 10; i++)
{
comboBox[i].text = "Hello world";
}
Los formularios tienen una propiedad Controls
, que devuelve una colección de todos los controles y que puede ser indexada por el nombre del control :
for(int i = 0; i < 10; i++)
{
var comboBox = (ComboBox)this.Controls["comboBox" + i.ToString()];
comboBox.text = "Hello world";
}
Puede acceder a todo el cuadro combinado de una forma de esa manera (suponiendo que se trata de un formulario):
List<ComboBox> comboBoxList = this.Controls.OfType<ComboBox>();
Entonces solo necesitas iterar sobre ellos
foreach (ComboBox comboBox in comboBoxList)
{
comboBox.Text = "Hello world!";
}
Puedes usar el método OfType
var comboBoxes = this.Controls
.OfType<ComboBox>()
.Where(x => x.Name.StartsWith("comboBox"));
foreach(var cmbBox in comboBoxes)
{
cmbBox.Text = "Hello world";
}