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

Улучшения интерфейса программы

Цель работы: Изучить основные приемы и способы унификации представления информации для конечного пользователя.

Основные положения

При аттестации модифицированного приложения конечными пользователями и менеджерами организации были высказаны ряд пожеланий:

  • в информации по сотрудникам желательно добавить данные по дате приема сотрудника на работу и дате рождения;
  • при представлении информации по сотруднику в режиме просмотра желательно все атрибуты представлять однотипно.

Дополнение приложения новой информацией

Модификацию приложения по учету сотрудников организации целесообразно проводить поэтапно.

Шаг 1. Модифицируйте форму представления данных по сотруднику FormEmployee (рисунок 12.1).

Для этого добавьте на форму:

  • текстовую метку 1, задав свойство name = labelBirthday и свойство text = "Дата рождения" ;
  • текстовую метку 2, задав свойство name = labelFirstDate и свойство text = "Дата приема на работу" ;
  • элемент управления календарь 1, задав свойство name = dateTimePickerBirthday, а свойство Format = Short ;
  • элемент управления календарь 2, задав свойство name = dateTimePickerFirstDate, а свойство Format = Short.
Прототип модифицированной формы FormEmployee

увеличить изображение
Рис. 12.1. Прототип модифицированной формы FormEmployee

Шаг 2. Для привязки элементов управления календарем dateTimePickerBirthday и dateTimePickerFirstDate к DataSetEmployee в метод FormEmployee_Load необходимо добавить следующий код:

dateTimePickerBirthday.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.dsEmployee, "Employee.Birthday"));
dateTimePickerFirstDate.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.dsEmployee, "Employee.FirstDate"));

Шаг 3. Отредактируйте метод DisplayReadOnly с учетом добавления на форму новых элементов управления dateTimePickerBirthday и dateTimePickerFirstDate.

Шаг 4. Проведите компиляцию и тестирование приложения. В результате выполнения программы экранная форма должна иметь вид, аналогичный, представленному на рисунке 12.2.

Модифицированная экранная форма приложения "Учет сотрудников"

увеличить изображение
Рис. 12.2. Модифицированная экранная форма приложения "Учет сотрудников"

Формирование однотипного представления информации

Для детального представления информации о сотруднике в разработанной форме используются элементы управления textBox, comboBox и dateTimePicker. В режиме "только для чтения" элементы управления отображают информацию по разному (рисунок 12.2). Так для элементов управления comboBox и dateTimePicker текст отображается более блекло, по сравнению с элементами управления textBox. С целью унификации отображения информации для конечного пользователя проведем модификацию формы FormEmployee.

Шаг.5. Изменим отображение должности сотрудника. Для этого добавим к форме элемент управления textBox (свойство name = textBoxJobRole ) и расположим его на форме так, что бы он закрывал имеющийся на форме элемент управления comboBoxJobRole (рисунок 12.3).

Экранная форма с добавленным элементом textBoxJobRole

увеличить изображение
Рис. 12.3. Экранная форма с добавленным элементом textBoxJobRole

Шаг.6. Добавленный элемент управления textBoxJobRole должен отображаться на форме в режиме "только для чтения" и содержать информацию о должности сотрудника. Введем изменения в метод DisplayReadOnly для управления режимом отображения элементом управления textBoxJobRole (см. "Создание элементов управления" ).

Шаг.7. Должность сотрудника в разработанной программе отображается элементом управления comboBoxJobRole, который связан с DateSet - dsEmployee. Синхронизацию отображения информации на элементах управления comboBoxJobRole и textBoxJobRole осуществим через событие "изменение выбранного индекса в списке" - SelectedIndexChanged элемента управления comboBoxJobRole. Листинг обработчика данного события имеет следующий вид.

private void comboBoxJobRole_SelectedIndexChanged(object sender, EventArgs e)
{
  textBoxJobRole.Text = comboBoxJobRole.Text;
}

Шаг.8. Откомпилируйте программу и протестируйте правильность отображения информации в элементе управления textBoxJobRole.

Шаг.9. В режимах редактирования и создания новой записи, если вводится новое значение должности, должен отображаться элемент управления comboBoxJobRole, но только на момент ввода данных. При этом необходимо обеспечить возможность ввода должности из списка имеющихся в справочнике системы должностей. Это необходимо обеспечить при переходе курсора в поле ввода должности сотрудника. Для реализации такого режима сформируем событие Click элемента управления textBoxJobRole. Для события Click добавим в текст программы метод обработчика события:

private void textBoxJobRole_Click(object sender, EventArgs e)
{ if (!textBoxJobRole.ReadOnly)
    {  textBoxJobRole.Visible = false;
        comboBoxJobRole.Visible = true;
        comboBoxJobRole.Focus(); }
}

Шаг.10. После ввода должности сотрудника из списка comboBoxJobRole и перехода к другому элементу управления формы необходимо на форме опять вывести элемент textBoxJobRole. Данные действия выполним по события Leave (покинуть) для элемента comboBoxJobRole. Обработчик события Leave имеет следующий вид:

private void comboBoxJobRole_Leave(object sender, EventArgs e)
{
    textBoxJobRole.Visible = true;
    comboBoxJobRole.Visible = false;
}

Шаг.11. Откомпилируйте программу и протестируйте правильность отображения информации в элементах управления textBoxJobRole и comboBoxJobRole.

Шаг.12. Аналогичные изменения сделайте для отображения информации по статусу и уровню доступа сотрудника. Для этого добавьте на форму FormEmployee элементы управления textBoxStatus и textBoxAccess.

Шаг.13. При изменении отображения информации о времени приема сотрудника на работу необходимо добавить элемент управления textBoxBirthday и выполнить действия, аналогичные проведенным ранее для отображения информации по должности сотрудника за одним исключением. Элемент управления dateTimePickerBirthday содержит информацию о дате и времени, а в элементе textBoxBirthday необходимо отображать только дату в текстовом формате. Формирование текстовой даты для элемента управления textBoxBirthday можно осуществить используя свойства Day, Month и Year объекта класса DateTime. С учетом вышеизложенного, листинг обработчика события "изменение значения величины Дата-Время" - ValueChanged будет иметь следующий вид:

private void dateTimePickerBirthday_ValueChanged(object sender, EventArgs e)
{
  DateTime dt = dateTimePickerBirthday.Value;
  textBoxBirthday.Text = " " + dt.Day + "." + dt.Month + "." + dt.Year;
}

Шаг.14. Откомпилируйте программу и протестируйте работу приложения. В режиме просмотра экранная форма должна иметь вид, аналогичный, приведенному на рисунке 12.4.

Экранная форма в режиме просмотра

увеличить изображение
Рис. 12.4. Экранная форма в режиме просмотра

При редактировании даты приема сотрудника на работу экранная форма должна иметь вид, аналогичный, приведенному на рисунке 12.5.

Экранная форма в режиме редактирования

увеличить изображение
Рис. 12.5. Экранная форма в режиме редактирования

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

  1. Изучите теоретический материал.
  2. Модифицируйте приложение для обеспечения стандартизированного отображения информации по сотрудникам организации.
  3. Протестируйте приложение.
Анна Иваненко
Анна Иваненко

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

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

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