Создание элемента управления вкладками с динамическим количеством вкладок в Visual Studio С#

Как создать элемент управления вкладкой с динамическим количеством вкладок в Visual Studio С#?

У меня есть база данных с таблицей customers. Мне нужно создать форму, в которой будут отображаться вкладки с первыми буквами имени клиента (должны присутствовать только те первые буквы, для которых есть записи в таблице). Каждая вкладка должна содержать элемент управления DataGrid с соответствующими клиентами. Я подключаюсь к базе данных с помощью DataSet.

Где я должен вставить фрагмент кода, который будет генерировать такие вкладки? Могу ли я сделать это с помощью существующего элемента управления вкладкой или создать собственный элемент управления?

Ответ 1

Вы можете создавать динамические вкладки с помощью существующего TabControl. Вот пример того, как это можно сделать в виде псевдокодовой формы...

TabControl tabControl = new TabControl();
tabControl.Dock = DockStyle.Fill;

foreach (Char c in lastNameList)
{
    TabPage tabPage = new TabPage();
    tabPage.Text = c.ToString();

    DataGrid grid = new DataGrid();

    grid.Dock = DockStyle.Fill;
    grid.DataSource = dataForTheCurrentLoop;

    tabPage.Controls.Add(grid);
    tabControl.Controls.Add(tabPage);
}

this.Controls.Add(tabControl);

Ответ 2

Вы бы добавили код для создания вкладок, в которых вы определяете, какие буквы должны отображаться, вероятно, когда вы либо извлекаете данные, либо в форме OnLoad(). Вы должны иметь возможность динамически добавлять/удалять вкладки из встроенного элемента управления вкладками. Вы можете проверить код разработчика, чтобы понять, как это сделать, или документы.

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

Вместо этого рассмотрите возможность создания механизма динамической фильтрации, аналогичного окну поиска в меню "Пуск" в Vista. Ваш пользователь может ввести один символ (при условии, что вы не пишете какой-либо киоск или программное обеспечение только для сенсорного экрана) и сразу увеличивайте до соответствующих имен. Это идеально сработало бы с ListView в режиме списка или сведений.

Ответ 3

Я не помню специфику сейчас. Но посмотрите на код в файле XXX.designer.cs для формы, которая содержит элемент управления вкладкой. Там вы увидите код, сгенерированный для добавления новой вкладки. Просто повторите эти строки, вы можете добавить новую вкладку, когда захотите.

Ответ 4

Похоже, лучший маршрут для вас - создать собственный собственный класс управления вкладками. Он может наследовать элемент управления вкладками для большей части его функциональных возможностей и свойств для datagrid и любого другого пользовательского интерфейса, который вам нужен. Затем, когда вы получаете своих клиентов, вы можете создать вкладку для каждой необходимой буквы и установить соответствующие свойства.