Страницы

Поиск по вопросам

пятница, 7 февраля 2020 г.

Как укоротить метод? с#

#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 Dictionary checkBoxes = checkBoxes = new Dictionary(){ {0, c1}, {1, c2}, ..., {11, c12}}; private void CheckB(int i) { CheckBox box; checkBoxes.TryGetValue(i, out box); box.Checked = true; }

Комментариев нет:

Отправить комментарий