Литмир - Электронная Библиотека
Содержание  
A
A

3. Улучшенная обратная связь. В этом случае на экране отображается не только курсор ожидания, информирующий пользователей о том, что приложение не может реагировать на их запросы, но и текстовое сообщение, объясняющее, чем именно занято приложение в данный момент. Такое поведение интерфейса еще больше устраивает пользователей, поскольку они становятся информированными участниками процесса, и пока идет работа, для них выводится пояснительный текст. Если в процессе выполнения этой работы происходят какие-либо изменения, пользователи будут об этом знать. Постоянно получая информацию о состоянии задачи, пользователи чувствуют себя комфортно. Для создания подобных условий требуется приложить немного больше усилий, чем во втором примере, но если мы в состоянии держать пользователей в курсе дел и предоставить им возможность следить за происходящими в системе изменениями, то достигнутый эффект окупит затраченные на это усилия.

Предполагается, что представленный в листинге 7.3 текст вы поместите в класс Form в проекте для Pocket PC. Для создания и выполнения примера необходимо выполнить следующие действия:

1. В Visual Studio .NET (2003 или более поздней версии) начните новый проект для Pocket PC с использованием языка C#.

2. Разместите в окне конструктора формы для Pocket PC текстовую метку и три кнопки (как показано на рис. 7.1).

3. Дважды щелкните мышью на пустом месте окна конструктора форм; в результате этого будет создан и присоединен к форме обработчик событий Form1_Load, представленный ниже. Включите в эту процедуру приведенный ниже код.

4. Дважды щелкните на кнопке Button1 формы; в результате этого будет создан и присоединен к форме обработчик событий button1_Click, представленный ниже. Включите в эту процедуру приведенный ниже код.

5. Проделайте то же самое для кнопок Button2 и Button3 и включите их коды в соответствующие процедуры.

6. Нажмите клавишу <F5> для запуска приложения на эмуляторе или физическом устройстве Pocket PC. (Если вы хотите запустить приложение без отладчика, нажмите комбинацию клавиш <Ctrl+F5>.)

Программирование мобильных устройств на платформе .NET Compact Framework - image042.jpg

Рис. 7.1. Пример приложения, иллюстрирующего различные варианты организации обратной связи с пользователем

 Листинг 7.3. Демонстрация трех различных уровней организации обратной связи с пользователем

//Поместить надписи на кнопках

private void Form1_Load(object sender, System.EventArgs e) {

 button1.Text = &quot;Плохая обратная связь&quot;;

 button2.Text = &quot;Хорошая обратная связь&quot;;

 button3.Text = &quot;Улучшенная обратная связь&quot;;

}

//----------------------------------------

//Пример слабых интерактивных возможностей интерфейса:

// - Визуальная индикация начала выполнения работы отсутствует

// - Визуальная индикация окончания выполнения работы отсутствует

// - Пользовательский интерфейс не способен к отклику во время работы

// - 0 завершении выполнения задачи пользователь вынужден только догадываться

//----------------------------------------

private void button1_Click(object sender, System.EventArgs e) {

 //Имитировать выполнение работы путем создания паузы

 //продолжительностью 4 секунды

 System.Threading.Thread.Sleep(4000);

}

//----------------------------------------

//Пример лучших интерактивных возможностей интерфейса:

// + Визуальная индикация начала выполнения работы

// (появление курсора ожидания)

// + Визуальная индикация окончания выполнения работы

// (исчезновение курсора ожидания)

// - Пользовательский интерфейс не способен к отклику во время работы

// + По завершении выполнения задачи конечный пользователь узнает об этом,

// а пользовательский интерфейс восстанавливает способность к отклику

//----------------------------------------

private void button2_Click(object sender, System.EventArgs e) {

 System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;

 //Имитировать выполнение работы путем создания паузы

 //продолжительностью 4 секунды

 System.Threading.Thread.Sleep(4000);

 System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;

}

//----------------------------------------

//Пример еще лучших интерактивных возможностей интерфейса:

// + Визуальная индикация начала выполнения работы // (появление курсора ожидания)

// + Отображение дополнительного текста, сообщающего пользователю // о том, что происходит

// + Визуальная индикация окончания выполнения работы // (исчезновение курсора ожидания)

// - Пользовательский интерфейс не способен к отклику в процессе работы

// + По завершении выполнения задачи конечный пользователь узнает об этом,

// а пользовательский интерфейс восстанавливает способность к отклику

// + Текстовые сообщения информируют пользователя о том, что происходит

//----------------------------------------

private void button3_Click(object sender, System.EventArgs e) {

 //Предоставить пользователю текст, информирующий его обо всем происходящем

 label1.Text = &quot;Ждите! Работа выполняется!&quot;;

 //Заставить интерфейс обновить текст

 //(иначе он сделает это только тогда, когда будет перерисовывать сообщение,

 //a это может произойти и после выхода из данной функции)

 label1.Update();

 //Отобразить курсор ожидания

 System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;

 //Имитировать выполнение работы путем создания паузы

58
{"b":"947732","o":1}