#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; }
Комментариев нет:
Отправить комментарий