c # Извлечение информации из элемента управления в динамически создаваемой вкладке - PullRequest
1 голос
/ 29 февраля 2012

Я новичок в c #, но столкнулся с проблемой, что Google не ответил за меня.

В моем коде я могу создавать TabPages в TabControl на основе пользовательского ввода.(например, если я хочу 5 элементов, мой код создаст 5 вкладок со своими элементами управления (ComboBoxes)).

Моя проблема заключается в получении данных из этих комбинированных списков.Я хочу иметь возможность получать выбранные данные из каждого ComboBox для каждого «элемента» (TabPage), который я создал.Поскольку они создаются динамически, я не могу просто ссылаться напрямую (например, TabControl.TabPages [n] .comboBox1.SelectedItem.ToString ()), потому что comboBox1 будет ссылаться только на последнюю созданную мной TabPage.1006 * Спасибо за чтение.

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

Поскольку вы называете ComboBox на каждой вкладке одинаково, я предлагаю вам назначить контейнер вкладок в качестве контейнера именования, сослаться на вкладку и затем использовать FindControl, чтобы найти ComboBox. Класс, представляющий вкладку, должен реализовывать INamingContainer. Это приводит к тому, что все элементы управления на вкладке имеют префикс идентификатора элемента управления с идентификатором контейнера именования. Вот пример контейнера именования http://www.robertsindall.co.uk/blog/using-inamingcontainer-in-controls/

0 голосов
/ 29 февраля 2012

Быстрое и простое решение - поместить списки в список, например:

    int tabCount = 5;
    tabControl.TabPages.Clear();

    List<ComboBox> comboboxes = new List<ComboBox>(tabCount);
    for (int i = 0; i < tabCount; i++)
    {
        TabPage tabPage = new TabPage();
        ComboBox comboBox = new ComboBox();
        comboboxes.Add(comboBox);
        tabPage.Controls.Add(comboBox);
        tabControl.TabPages.Add(tabPage);
    }

    // You can access the values using the 'comboboxes' list now.

Лучшим (но более сложным) решением было бы реализовать модель данных и связать комбинированные списки с этой моделью. Таким образом, вы не будете заботиться о конкретном элементе управления (то есть TabPage, ComboBox и т. Д.), Который представляет значения.

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