Разработка Windows-приложений на языке C# 2005

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

Показывать лекцию целиком

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

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

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

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

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

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

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

  • текстовую метку 1, задав свойство name = labelBirthday и свойство text = "Дата рождения" ;
  • текстовую метку 2, задав свойство name = labelFirstDate и свойство text = "Дата приема на работу" ;
  • элемент управления календарь 1, задав свойство name = dateTimePickerBirthday, а свойство Format = Short ;
  • элемент управления календарь 2, задав свойство name = dateTimePickerFirstDate, а свойство Format = Short.
  • (рис 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).

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

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

    Шаг.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) Экранная форма в режиме редактирования

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

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