Управление рабочим процессом пользователя в Winforms - PullRequest
0 голосов
/ 14 января 2010

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

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

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

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

Изображение недоступно

Ответы [ 4 ]

4 голосов
/ 14 января 2010

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

Создание такого мастера можно выполнить с помощью TabControl. Добавьте новый класс в ваш проект и вставьте код, показанный ниже. Компиляция. Перетащите новый элемент управления из верхней части панели инструментов на форму. Во время разработки он выглядит как обычный TC, позволяя вам добавлять элементы управления, необходимые для каждого шага мастера. Во время выполнения вкладки скрыты. Реализация кнопок Next и Back проста, просто измените свойство 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);
  }
}
2 голосов
/ 14 января 2010

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

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

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

0 голосов
/ 14 января 2010

Это уже было сказано несколько раз, но вы можете сделать вкладки 2 и 3 отключенными или невидимыми, пока пользователь не нажмет вашу кнопку отправки на вкладке 1, не подтвердит поля и не включит вкладку 2. То же самое можно сделать для tab3, если у вас есть кнопка отправки в tab2.

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

0 голосов
/ 14 января 2010

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

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