Каков стандартный способ добавления элементов управления в TabPage во время разработки? - PullRequest
1 голос
/ 24 февраля 2010

Я создаю свое первое приложение Windows Forms для развертывания в Windows Mobile, и у меня возникают некоторые проблемы при разработке интерфейса с вкладками.

Я предполагал, что смогу создать TabControl, затем добавить несколько вкладок и перетащить элементы управления по очереди на каждую вкладку. Это кажется невозможным, и большая часть информации, которую я вижу в Интернете, предполагает, что элементы управления должны добавляться динамически во время выполнения.

Я что-то упускаю здесь очевидное или это действительно правильно?

Если вам нужно добавить элементы управления во время выполнения, то как люди обычно управляют процессом проектирования. Создают ли они пользовательский контроль пользователя для каждой вкладки, а затем добавляют его во время выполнения?

Среда разработки (C # Visual Studio 2005, .net 2.0) Среда выполнения (Windows Mobile 6.1)

Обновление 1

Фактические шаги, предпринятые в визуальной студии, были следующими: -

  1. Выберите Новый проект -> SmartDevice -> Windows Mobile 6 Professional -> Приложение для устройства
  2. Добавлен TabControl для Form1. Это автоматически добавляет tabPage1 и tabPage2

Обновление 2

Решение этого смущающе нубистское. TabControl помещает вкладки внизу страницы, первое, что я делал, это изменял размер элемента управления вкладками до одной строки, которая затем скрывала элемент управления TabPage.

Ответы [ 2 ]

2 голосов
/ 24 февраля 2010

В настоящее время я не использую Windows Mobile, но я думаю, что он работает точно так же.

После добавления TabControl к вашей форме вы должны взглянуть на свойства и найти TabPages. Здесь вы можете добавлять и удалять новые вкладки в вашем элементе управления и создавать их так, как вам нравится в конструкторе.

На ваш вопрос об использовании UserControls на каждой вкладке я бы определенно ответил Да . Это облегчает разделение между каждой страницей и тем, что будет происходить на каждой.

Также на последнем шаге я собираюсь переместить необходимый код из Designer.cs в свою собственную функцию (например, var tabControl = CreateTabControl(), где установлены все мои свойства. Затем я помещаю все свои UserControls в

private IEnumerable<Type> GetAllTypes()
{
    yield return typeof(MyFirstControl);
    yield return typeof(MySecondControl);
}

и сделать

private void CreateTabPages(TabControl tabControl, IEnumerable<Type> types)
{
    foreach(var type in types)
    {
        var control = Activator.CreateInstance(type);
        var tabPage = new TabPage();
        tabPage.Controls.Add(control);
        tabControl.TabPages.Add(tabPage);
    }
}

тогда это будет называться

CreateTabPages(tabControl, GetAllTypes());

При таком подходе я могу легко добавить еще одну вкладку с одной строкой кода и создать ее в своей области видимости.

1 голос
/ 24 февраля 2010

Я просто открыл vs2008 и создал tabcontrol, затем я добавил элементы управления внутри, используя перетаскивание в конструкторе, и я не нашел никаких проблем.

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

Я не знал, почему ваш метод не работает. Вы остановили свое приложение, прежде чем пытаться добавить элементы управления?

Удачи.

...