Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример простой программы с графическим интерфейсом

Взаимодействие пользователя с приложением

Взаимодействие пользователя лучше всего описывается в виде различных событий, которые инициируют ЭУ (на основе сообщений ОС о действиях пользователя) и на которые отвечает (обрабатывает) приложение. Наиболее часто используемыми событиями являются следующие:

Ÿ Click – щелчок левой кнопки «мыши» в области окна;

Ÿ DoubleClick – два щелчка левой кнопки «мыши» с интервалом меньше некоторого заданного значения;

Ÿ KeyDown – нажатие клавиши клавиатуры;

Ÿ KeyPress – нажатие и отпускание клавиши, в результате которых в программу передается некоторый символ;

Ÿ Validating – проверки введенных данных;

Ÿ Paint – необходимо перерисовать клиентскую область.

 

События от устройства «мышь», такие, как Click, DoubleClick, MouseDown, MouseUp, MouseEnter, MouseLeave и MouseHover, связаны с различными действиями пользователей над областью ЭУ.

Для событий Click и DoubleClick передается параметр типа EventArgs, а для событий MouseDown и MouseUp передается параметр типа MouseEventArgs, который содержит такую полезную информацию (свойства класса), как текущие координаты курсора в клиентской области, описание нажатой кнопки, количество нажатий кнопки, количество щелчков при вращении колеса «мыши».

События клавиатуры работают аналогично: количество передаваемой информации зависит от типа обрабатываемого события. Например, для события KeyPress в метод обработки события передается параметр KeyPressEventArgs, который содержит свойство KeyChar значение типа char, которое представляет символ нажатой клавиши.

Свойство Handled используется для определения того, было ли обработано данное событие. Если свойству Handled задано значение true, то данное событие не будет передаваться ОС для стандартной обработки. События KeyDown или KeyUp больше подходят для обработки, если требуется получить больше информации о нажатой клавише, так как они получают параметр KeyEventArgs. Параметр KeyEventArgs включает свойства о том, какие клавиши Ctrl, Alt или Shift были нажаты. Свойство KeyCode возвращает значение перечисления Keys, которое указывает на виртуальный код нажатой клавиши. В отличие от KeyPressEventArgs.KeyChar свойство KeyCode передает виртуальный код любой нажатой клавиши клавиатуры, а не алфавитноцифровой символ клавиши.

Свойство KeyData возвращает значение перечисления Keys, а также состояние дополнительных клавиш. Например, была ли нажата клавиша Shift или Ctrl. Свойство KeyValue содержит целое значение перечисления Keys. Свойство Modifiers содержит значения Keys, которые соответствуют кодам дополнительно нажатых клавиш. Если было нажато несколько клавиш, то они объединяются с помощью операции OR. События, связанные с клавишей инициируются в следующем порядке: 1) KeyDown; 2) KeyPress; 3) KeyUp.

События Validating, Validated, Enter, Leave, GotFocus и LostFocus имеют отношение к получению ЭУ фокуса ввода (когда ЭУ становится активным) или потери фокуса. Это происходит, когда пользователь нажимает клавишу Tab для перехода к нужному ЭУ или выбирает этот элемент с помощью «мыши». Кажется, что события Enter, Leave, GotFocus и LostFocus очень сходны по выполняемой работе. События GotFocus и LostFocus являются событиями более низкого уровня, которые связаны с WM_SETFOCUS и WM_KILLFOCUS сообщениями ОС. Обычно лучше использовать события Enter и Leave. События Validating и Validated возникают при проверке значения в ЭУ. Они получают параметр типа CancelEventArgs. С его помощью можно прервать следующие события, если задать свойству Cancel значение true. Если разработчик задает собственный код проверки введенных значений и проверка оказалась не успешной, то можно задать свойству Cancel значение true и ЭУ не будет терять фокус ввода (не будет выполняться переход к следующему ЭУ формы). Событие Validating возникает в ходе проверки, а событие Validated возникает после выполнения проверки. Эти события возникают в следующем порядке: 1) Enter; 2) GotFocus; 3) Leave; 4) Validating; 5) Validated; 6) LostFocus.

 

Обычное Windows приложение содержит несколько форм, которые создаются с помощью объектов класса Form. Данный класс также является ЭУ и наследуется от базового класса Control. Одни формы приложения открываются в процессе работы, другие закрываются. В каждый текущий момент на экране может быть открыта одна или несколько форм, пользователь может работать с одной формой или переключаться по ходу работы с одной на другую.

Форма, открываемая в методе Main() при вызове метода Run() класса Application, называется главной формой приложения. Ее закрытие приводит к закрытию всех остальных форм и завершению Windows приложения. Завершить приложение можно и программно, вызвав статический метод Application.Exit(). Закрытие других форм не приводит к завершению проекта. Обычно главная форма приложения всегда открыта, в то время как остальные формы открываются и закрываются (или скрываются).

Для создания формы лучше всего (что и делается в Visual Studio) создать новый класс, производный от класса Form. В конструкторе класса можно задать требуемые значения свойств данного класса и включить в данную форму все требуемые объекты. В приведенном ниже примере создан класс MyForm. Объекты данного класса будут соответствовать окну, которое содержит нужные элементы управления и обрабатывает события, связанные с окном и элементами управления.

 

using System;

using System.Windows.Forms;

namespace WindowsApp {

class Program{

static void Main(string[] args){

MyForm frm = new MyForm("Первое окно");

Application.Run(frm);

}

}

class MyForm: Form {

Button btn1 = new Button();

public MyForm(string s){

this.Text = s;

btn1.Top = 10; btn1.Left = 20;

btn1.Text = "Нажми";

Controls.Add(btn1);

btn1.Click +=new EventHandler(btn1_Click);

}

public void btn1_Click(object o, EventArgs ea){

MessageBox.Show("Привет, Мир!");

}

}

}

Как уже было сказано, для передачи сообщений из очереди приложения в главную форму используется метод Application.Run(), которому передается ссылка на созданный объект формы. Данный метод организует цикл передачи сообщений в формы приложения. Он прекращает свою работу только при поступлении в очередь сообщения WM_QUIT, которое поступает при закрытии основного окна формы (нажатие кнопки ) или выборе команды меню для окончания работы с приложением (например: Выход или Exit).

Для отображения элементов управления в форме необходимо создать соответствующие им объекты, задать нужные значения их свойствам и добавить их в коллекцию формы Controls. Например:

 

Button btn1 = new Button();

btn1.Top = 10; btn1.Left = 20; // задание расположения

btn1.Text = "Нажми"; // задание текстового заголовка

Controls.Add(btn1); // занесение в коллекцию элементов

 

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

Например, для обработки события нажатия описанной ранее кнопки, описывается обработчик события, который присваивается переменной события класса:

// описание обработчика события

public void btn1_Click(object o, EventArgs ea){

MessageBox.Show("Привет, Мир!");

}

//...

// присвоение ссылки на данный метод переменной события

btn1.Click += new EventHandler(btn1_Click);

Результат работы данной программы показан на рис. 8.4.

Рис. 8.4. Результат работы программы WindowsApp.

 

<== предыдущая лекция | следующая лекция ==>
Стандартный тип обработчика события | Відзначені суспільні відносини підпадають під дію спеціальних правових норм, які мають назву еколого-правових
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 482; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.024 сек.