Для разработки проекта приложения форма FormEmployee должна содержать элементы управления, в соответствии с видом, приведенном на рисунке 7.4.
Рис. 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.
Рис. 7.5. Создание панелей на форме FormEmployee
Рис. 7.6. Формирование элементов управления на панели 1 формы FormEmployee
Для этого необходимо задать последовательные номера свойству TabIndex элементов управления (в разрабатываемой форме это необходимо сделать для элементов управления TextBox и ComboBox) из окна Properties (рисунок 7.7) или вызвать мастер Tab Order Wizard из меню View/Tab Order (рисунок 7.8). Задание последовательности значений свойству TabIndex производится щелчком мыши на элементах управления в заданной последовательности.
Рис. 7.7. Задание свойства TabIndex для элемента контроля
|
|
Рис. 7.8. Настройка перехода по элементам управления
Результат настройки порядка перехода между элементами управления при нажатии клавиши Tab приведен на рисунке 7.9.
Для работы с формой необходимо создать методы, которые разрешают только просматривать форму (режим просмотра) и редактировать форму (режим редактирования).
Рис. 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.