2010-01-14 3 views
-2

Я создаю приложение Winforms на C#, и я добавил элемент управления вкладкой, который имеет три вкладки.Управление рабочим процессом пользователя в Winforms

Я хочу ограничить возможность доступа пользователя к второй вкладке, пока пользователь не заполнит первую вкладку.

У меня есть кнопка отправки первой вкладки, я хочу, чтобы вторая вкладка могла быть доступна, когда пользователь нажимает кнопку submit.

Как это сделать?

Image unavailable

+1

На ваш вопрос вы должны добавить более подробную информацию. Во-первых, используете ли вы Windows Forms? – Sakkle

+2

Пожалуйста, отметьте свой вопрос, чтобы указать Windows/Web Forms. Вопрос почти бесполезен без этой информации, так как ответ будет сильно отличаться в зависимости от того, что это такое. – tvanfosson

+1

Это одно длинное предложение! – harryovers

ответ

4

Предотвращение выбора пользователем вкладки обеспечивает очень неинтуитивный пользовательский интерфейс. Подумайте о создании «мастера», гаджета пользовательского интерфейса, который переводит пользователя с одной страницы на другую с помощью кнопки «Далее». И кнопка «Назад», необязательно. Вы можете дать понять, что шаг завершен, установив свойство Enabled следующей кнопки.

Создание такого мастера можно с помощью TabControl. Добавьте новый класс в свой проект и вставьте код, показанный ниже. Компиляция. Отбросьте новый элемент управления сверху панели инструментов на свою форму. Во время разработки он выглядит как обычный TC, позволяющий добавлять элементы управления, необходимые для каждого шага мастера. Во время выполнения вкладки скрыты. Реализация кнопок «Далее» и «Назад» проста, просто измените свойство SelectedIndex.

using System; 
using System.Windows.Forms; 

class WizardPages : TabControl { 
    protected override void WndProc(ref Message m) { 
    // Hide tabs by trapping the TCM_ADJUSTRECT message 
    if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1; 
    else base.WndProc(ref m); 
    } 
} 
+0

В режиме разработки, проектирование формы очень сложно, если вы хотите, чтобы она заполнила форму. Я предлагаю удалить DesignMode в инструкции if и включить Document Outline by View> Other Windows> Document Outline. Тогда вы также можете легко переключаться с вкладками. – PythEch

2

Вы можете просто отключить вкладку, пока пользователь не завершит страницу один: каждый раз, когда пользователь изменяет значение на вкладке одного, проверки значений на вкладке и включить/отключить вкладку два, как это необходимо.

Однако, это не похоже на то, что ваш процесс подходит для вкладок, возможно, больше подходит подход «Мастер», где каждый шаг должен быть завершен, прежде чем переходить к следующему? Больше информации действительно было бы полезно.

Редактировать: Если вы предпочитаете, вы можете использовать событие управления табуляцией Selecting, чтобы отменить изменение вкладок.

+0

+1 согласитесь, что это не похоже на правильный способ представить его. Это может быть очень неприятно, если вы хотите установить опцию, но вы не разрешены, и вы не можете сказать почему. –

0

Простейшими способами было бы сделать запрещенные вкладки либо не видимыми, либо не включенными.

0

Было сказано несколько раз уже, но вы можете сделать вкладки 2 и 3 отключенными или невидимыми, пока пользователь не нажмет кнопку отправки в tab1, не проверит флаги, а затем включит tab2. То же самое можно сделать для tab3, если у вас есть кнопка отправки в tab2.

Снова нужно повторить, что с точки зрения удобства использования это не оптимальное использование вкладок. Если вы сообщите нам, что делает приложение, мы, вероятно, сможем дать вам лучшее решение проблемы.

Смежные вопросы