将相同的项目添加到多个组合框中

本文关键字:组合 添加 项目 | 更新日期: 2023-09-27 18:19:20

我有30个组合框,我必须在每个组合框中添加相同的项目。有没有比重复30次输入相同的代码更快的方法?

        comboBox1.Items.Add("K");
        comboBox1.Items.Add("H");
        comboBox1.Items.Add("L");
        comboBox1.Items.Add("T");
        comboBox1.SelectedIndex = 0;
        comboBox2.Items.Add("K");
        comboBox2.Items.Add("H");
        comboBox2.Items.Add("L");
        comboBox2.Items.Add("T");
        comboBox2.SelectedIndex = 1;

将相同的项目添加到多个组合框中

string[] values = new[] { "K", "H", "L", "T" };
foreach(string value in values) 
{
    combobox1.Items.Add(value);
    combobox2.Items.Add(value);
}

如果ItemsCollection有一个AddRange方法就更好了:

string[] values = new[] { "K", "H", "L", "T" };
combobox1.Items.AddRange(values);
combobox2.Items.AddRange(values);

您可以使用OfType方法遍历所有的组合框:

int i = 0;
foreach(var cmbBox in this.Controls.OfType<ComboBox>())
{
    cmbBox.Items.Add("K");
    cmbBox.Items.Add("H");
    cmbBox.Items.Add("L");
    cmbBox.Items.Add("T");
    cmbBox.SelectedIndex = i++;
}
InitComboBox(comboBox1);
InitComboBox(comboBox2);
...

private void InitComboBox(ComboBox cb)
{
    cb.Items.Add("K");
    cb.Items.Add("H");
    cb.Items.Add("L");
    cb.Items.Add("T");
    cb.SelectedIndex = 0;
}

你添加一个方法FillCombo

void FillCombo(Control ctrl)
{
    foreach (ComboBox cb in ctrl.Controls) 
    {
     cb.Items.Add("K");
    cb.Items.Add("H");
    cb.Items.Add("L");
    cb.Items.Add("T");
    cb.SelectedIndex = 0;
    }
}

使用它:

FillCombo(this);