Добавление одних и тех же предметов в несколько списков

1

У меня есть 30 comboboxes, и в каждом из них я должен добавить те же элементы. Есть ли более быстрый способ сделать это, чем вводить один и тот же код заново в течение 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;

... и так далее..

Теги:

4 ответа

1
Лучший ответ
string[] values = new[] { "K", "H", "L", "T" };
foreach(string value in values) 
{
    combobox1.Items.Add(value);
    combobox2.Items.Add(value);
}

Еще лучше, если ItemCollection имеет метод AddRange:

string[] values = new[] { "K", "H", "L", "T" };
combobox1.Items.AddRange(values);
combobox2.Items.AddRange(values);
  • 0
    Почему -1? Серьезно, я новичок здесь.
  • 0
    По крайней мере, WinForms ComboBox имеет метод AddRange для элементов. Так что мне нравится это решение. Но вам также нужно установить выбранный индекс
Показать ещё 2 комментария
1
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;
}
1

Вы можете перебирать все OfType с OfType метода 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++;
}
  • 0
    Если выпадающие списки добавляются в коллекцию элементов управления не в порядке возрастания их имен, будут выбраны неверные индексы
  • 0
    Это не правильно, но на самом деле нам сказали правило для SelectedIndex! Так что i , наверное, все равно ошибаюсь ..
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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню