Массив элементов WinForm - PullRequest
0 голосов
/ 06 июля 2018

Итак, в моей Программе есть WinForm, которая содержит серию каждого ComboBox и два TextBox.Есть 8 линий АТМ, но их количество увеличится как минимум до 32, поэтому я хотел бы работать с массивом или подобным.Как мне это сделать?

Мой текущий рабочий метод заключается в том, чтобы создать новый массив TextBoxes / ComboBoxes, которые я назначаю назначенному элементу WinForm вручную.Поэтому у меня есть такой список:

tbGU[0] = tbGU1;
tbGO[0] = tbGO1;
cbS[0] = cbS1;

Конечно, это выглядит ужасно и не очень хорошо, если его копировать много раз.Кто-нибудь получил решение моей проблемы?

Мне нужно получить доступ к SelectedIndex ComboBox и текст TextBoxes.Я надеялся, что смогу избежать создания всех элементов вручную с помощью кода.

1 Ответ

0 голосов
/ 06 июля 2018

Одним из простых решений является использование синтаксиса инициализатора массива:

ComboBox[] cbS = new[] { cbS1, cbS2, cbS3 ... };

Еще один способ сделать это - полностью избавиться от переменных cbS1, cbS2 ... cBSn и создать элементы управления в цикле for.

ComboxBox[] cbS = new ComboBox[32];
// declare the text box arrays here as well
for (int i = 0 ; i < cbS.Length ; i++) {
    cbS[i] = new ComboBox();
    cbS[i].Location = ... // use "i" to help you position the control
    // configure your combo box ...
    this.Controls.Add(cbS[i]);

    // do the same for the text boxes.
}

Третий способ - создать пользовательский элемент управления:

// name this properly!
public class MyControl: UserControl {
    public ComboBox CbS { get; }
    public TextBox TbGU { get; }
    public TextBox TbGO { get; }

    public MyControl() {
        // create and configure the combo box and text boxes here ...
    }
}

Затем вы можете использовать цикл for для создания лотов MyControl с.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...