#c_sharp #net #winforms #checkbox
Как можно укоротить этот метод?
В зависимости от входящего значения он отмечает чекбоксы.
private void CheckB(int i)
{
switch (i)
{
case 0:
c1.Checked = true;
return;
case 1:
c2.Checked = true;
return;
case 2:
c3.Checked = true;
return;
case 3:
c4.Checked = true;
return;
case 4:
c5.Checked = true;
return;
case 5:
c6.Checked = true;
return;
case 6:
c7.Checked = true;
return;
case 7:
c8.Checked = true;
return;
case 8:
c9.Checked = true;
return;
case 9:
c10.Checked = true;
return;
case 10:
c11.Checked = true;
return;
case 11:
c12.Checked = true;
return;
}
Ответы
Ответ 1
Можно поместить чекбоксы в массив: private readonly CheckBox[] checkBoxes; В конструкторе (после InitializeComponent();) создаем массив: checkBoxes = new[] { c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12 }; Тогда ваш метод будет выглядеть так: private void CheckB(int i) { if (i >= 0 && i < checkBoxes.Length) checkBoxes[i].Checked = true; }Ответ 2
Можно сделать через Dictionary. Возможно так быстрее будет. private readonly DictionarycheckBoxes = checkBoxes = new Dictionary (){ {0, c1}, {1, c2}, ..., {11, c12}}; private void CheckB(int i) { CheckBox box; checkBoxes.TryGetValue(i, out box); box.Checked = true; }
Комментариев нет:
Отправить комментарий