Опубликован: 09.09.2008 | Доступ: свободный | Студентов: 2107 / 346 | Оценка: 4.30 / 4.12 | Длительность: 08:30:00
ISBN: 978-5-94774-601-3
Самостоятельная работа 7:

Создание элементов управления

Проектирование элементов управления формы FormEmployee

Для разработки проекта приложения форма FormEmployee должна содержать элементы управления, в соответствии с видом, приведенном на рисунке 7.4 .

Вид экранной формы FormEmployee

увеличить изображение
Рис. 7.4. Вид экранной формы FormEmployee

На данной форме необходимо сформировать элементы управления, приведенные в таблице 7.14.

Таблица 7.14. Элементы управления формы FormEmployee
Элемент контроля Имя Свойство Text/Items Назначение
SplitContainer splitContainerEmployee Две панели с разделителем
Label labelListEmployee Список сотрудников Надпись
listBox listBoxEmployee Список сотрудников
Label labelSurname Фамилия Надпись
Label labelName Имя Надпись
Label labelPatronymic Отчество Надпись
Label labelJobRole Должность Надпись
Label labelStatus Статус Надпись
Label labelAccess Уровень доступа Надпись
label labelNetName Сетевое имя Надпись
textBox textBoxNetName Сетевое имя
textBox textBoxSurname Фамилия
textBox textBoxName Имя
textBox textBoxPatronymic Отчество
comboBox comboBoxJobRole Должность
comboBox comboBoxStatus Активен, выходной, в отпуске, болеет, не работает, помечен как удаленный Статус
comboBox comboBoxAccess Оператор, старший оператор, начальник смены, администратор, аналитик Уровень доступа
menuItem menuItemAction Действие Пункт меню "Редактировать"
menuItem menuItemUndo Отменить Подпункт меню "Отменить"
menuItem menuItemNew Создать Подпункт меню "Новый"
menuItem menuItemEdit Изменить Подпункт меню "Изменить"
menuItem menuItemSave Сохранить Подпункт меню "Сохранить"
menuItem menuItem Удалить Подпункт меню "Удалить"
menuItem menuItemReport Отчет Пункт меню "Отчет"
menuItem menuItemReport1 По сотруднику Подпункт меню "Отчет по сотруднику"
menuItem menuItemReport2 По всем сотрудникам Подпункт меню "Отчет по всем сотрудникам"

Вначале создайте на форме элемент SplitContainer (рисунок 7.5). На панели 1 создайте элементы управления labelListEmployee и listBoxEmployee (рисунок 7.6), а остальные элементы управления, приведенные в таблице 7.14, - на панели 2 (рисунок 7.4).

После создания на форме FormEmployee элементов управления в соответствии с таблицей 7.14 необходимо настроить порядок перехода между ними при нажатии клавиши Tab.

Создание панелей на форме FormEmployee

увеличить изображение
Рис. 7.5. Создание панелей на форме FormEmployee
Формирование элементов управления на панели 1 формы FormEmployee

увеличить изображение
Рис. 7.6. Формирование элементов управления на панели 1 формы FormEmployee

Для этого необходимо задать последовательные номера свойству TabIndex элементов управления (в разрабатываемой форме это необходимо сделать для элементов управления TextBox и ComboBox ) из окна Properties (рисунок 7.7) или вызвать мастер Tab Order Wizard из меню View/Tab Order (рисунок 7.8). Задание последовательности значений свойству TabIndex производится щелчком мыши на элементах управления в заданной последовательности.

Задание свойства TabIndex для элемента контроля

Рис. 7.7. Задание свойства TabIndex для элемента контроля
Настройка перехода по элементам управления

увеличить изображение
Рис. 7.8. Настройка перехода по элементам управления

Результат настройки порядка перехода между элементами управления при нажатии клавиши Tab приведен на рисунке 7.9.

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

Результат работы мастера Tab Order Wizard

увеличить изображение
Рис. 7.9. Результат работы мастера Tab Order Wizard

Создадим метод для задания режима просмотра формы DisplayReadOnly. Метод DisplayReadOnly должен быть общедоступным, ничего не должен возвращать и не иметь параметров. Для задания режима просмотра (только для чтения) объекту класса TextBox необходимо свойству ReadOnly присвоить значение true, а для объекта класса comboBox - свойству Enabled значение false. Код метода DisplayReadOnly представлен далее:

public void DisplayReadOnly()
{
    this.textBoxSurname.ReadOnly = true;
    this.textBoxName.ReadOnly = true;
    this.textBoxPatronymic.ReadOnly = true;
    this.textBoxNetName.ReadOnly = true;
    this.comboBoxJobRole.Enabled = false;
    this.comboBoxStatus.Enabled = false;
    this.comboBoxAccess.Enabled = false;
}

Аналогичным образом сформируем метод DisplayEdit, который задает режим редактирования формы:

/// Задание режима редактирования
public void DisplayEdit()
{
    this.textBoxSurname.ReadOnly = false;
    this.textBoxName.ReadOnly = false;
    this.textBoxPatronymic.ReadOnly = false;
    this.textBoxNetName.ReadOnly = false;
    this.comboBoxJobRole.Enabled = true;
    this.comboBoxStatus.Enabled = true;
    this.comboBoxAccess.Enabled = true;
}

Для управления режимом доступности (только для чтения/редактирование) формы FormEmployee необходимо метод DisplayReadOnly вызывать при первоначальной загрузке формы (событие Load ), при создании новых данных по сотруднику и при редактировании данных по сотруднику, а метод DisplayEdit - при сохранении данных по сотруднику и при отмене режима редактирования данных.

Проверьте правильность режима управления доступностью элементов управления формы FormEmployee.

Анализ кодов методов DisplayReadOnly( ) и DisplayEdit( ) показывает, что они могут быть объединены в один метод с параметром. Необходимо самостоятельно написать объединенный метод, получив в результате метод DisplayReadOnly(bool readOnly), в котором параматр readOnly определяет режим редактирования: если readOnly равен true, то режим только для просмотра, если равен false, то - редактирование.

В процессе работы приложения необходимо управлять доступом к пунктам меню в соответствии с диаграммой состояний для пунктов меню формы FormEmployee, приведенной на рисунке 7.10.

Диаграмма состояний для активности подпунктов меню "Действие"

увеличить изображение
Рис. 7.10. Диаграмма состояний для активности подпунктов меню "Действие"

Диаграмма отображает возможные переходы между тремя режимами: "Просмотр", "Редактирование" и "Создание нового сотрудника".

При выборе в главном меню приложения пункта "Сотрудник" Windows -форма FormEmployee должна перейти в режим "Просмотр", что определяет доступ к пунктам меню "Создать", "Редактировать", "Удалить" и запрет доступа к подпунктам меню "Отменить", "Сохранить".

Если в режиме просмотр выбирается подпункт меню "Удалить", то в результате выполнения данной функции режим Windows-формы FormEmployee не должен измениться, т.е. форма должна остаться в режиме "Просмотр".

Если в режиме просмотр выбирается подпункт меню "Изменить", то Windows-формы FormEmployee должна перейти в режим "Редактирование". Данный режим предполагает, что разрешается доступ к подпунктам меню "Отменить", "Сохранить" и запрещается доступа к подпунктам меню "Создать", "Редактировать", "Удалить".

Аналогичным образом интерпретируются переходы формы FormEmployee из одного режима в другой.

На рисунке 7.10 представлены режимы и переходы для подпунктов главного меню. Аналогичные режимы необходимо соблюдать для контекстного меню и кнопок панели инструментов.

Для управления доступом к пунктам главного меню создайте методы MenuItemEnabled(bool itemEnabled), для контекстного меню - MenuItemContextEnabled(bool itemEnabled) и для кнопок панели управления - StripButtonEnabled(bool itemEnabled). Управление доступностью пунктов главного и контекстного меню осуществляется через свойство Enabled класса ToolStripMenuItem, а кнопок панели управления - через свойство Enabled класса ToolStripButton.

Проверьте правильность режима управления пунктов главного и контекстного меню, а также кнопок панели управления формы FormEmployee.

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

private void DisplayForm(bool mode)
{
    DisplayReadOnly(mode);
    MenuItemEnabled(mode);
    MenuItemContextEnabled(mode);
    StripButtonEnabled(mode);
}

Первоначальная установка режима "Просмотр" должна проводиться при первоначальной загрузке формы FormEmployee.

Задание на лабораторную работу

  1. Изучить теоретический материал.
  2. Для формы FormEmployee создать требуемые элементы контроля.
  3. Разработать методы для задания режимов "Просмотр", "Редактирование" для элементов контроля.
  4. Разработать методы для задания режимов "Просмотр", "Редактирование" для управления активностью пунктов главного меню формы, контекстного меню и кнопок панели инструментов.
  5. Сформировать обработчик события Load.
  6. Протестировать программу.
Анна Иваненко
Анна Иваненко

В самостоятельной работе 8 написано: "В пункте "Server name" задаем имя сервера, которое необходимо узнать у преподавателя". Где узнать это имя?

Вячеслав Шестивский
Вячеслав Шестивский

Вроде всё выставил верно, но при клике на "Сотрудники", меню из FormEmplyee не вставляется в меню главного окна а висит в дочернем окне снизу.  Как поправить?