Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_C#.doc
Скачиваний:
38
Добавлен:
15.11.2018
Размер:
2.72 Mб
Скачать

17.3 Обработка событий

Хотя в усовершенствованной версии приложения есть кнопка, она не несет никакой полезной нагрузки. Теперь нашей задачей будет создание для этой кнопки обработчика события. Когда пользователь щелкает кнопку мышью, этот обработчик должен будет выводить на экран компьютера диалоговое окно с сообщением, а в исходный текст приложения будет добавлен метод button1_Click:

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

Пока этот метод, получающий управление при щелчке кнопки, ничего не делает. Метод button1_Click — это обработчик события, возникающего, когда пользователь щелкает кнопку. Чтобы этот метод заработал, его нужно подключить на этапе инициализации формы. Такое подключение обеспечивает следующая строка, добавленная дизайнером формы в метод InitializeComponent:

this.button1.Click += new System.EventHandler(this.button1_Click);

Чтобы в процессе обработки сообщения от кнопки вывести на экран сообщение, измените исходный текст метода button1_Click следующим образом:

private void button1_Click(object sender, System.EventArgs e) {   MessageBox.Show("Для Вас есть сообщение!"); }

Мы вставили сюда вызов метода MessageBox.Show. Этот метод отображает на экране диалоговое окно с текстом сообщения.

Платформа .NET требует точной сигнатуры для любого обработчика событий. button1_Click () и все остальные обработчики событий обязаны выглядеть следующим образом:

void button1_Click (object sender, EventArgs e)//е также может быть производным от EventArgs

{

// код для обработки события

}

Обработчики событий не могут возвращать ничего, кроме void. В них отсутствует точка, которая могла бы служить для возврата значения. Обработчики должны принимать два параметра. Первый параметр является ссылкой на объект, который сгенерировал событие. Второй параметр должен быть ссылкой либо на базовый класс .NET System.EventArgs, либо на производный класс. Класс EventArgs представляет собой общий базовый класс для всех уведомлений о произошедших событиях.

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

Для демонстрации обработки событий мыши можно спроектировать приложение, в котором кнопка будет убегать от указателя мыши, т.е. нажать ее будет невозможно. Для этого необходимо изменять положение кнопки на форме в зависимости от того, где находится указатель мыши. Реализовать это можно задействовав событие MouseMove кнопки. Это событие наступает, когда указатель мыши перемещается в области кнопки.

В обработчике этого события связываем движение мыши с координатами кнопки и устанавливаем координаты кнопки, куда она будет возвращаться, если во время своего движения выйдет за указанную область:

private void btnno_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)

{

btnno.Top -= e.Y; //e.Y и e.X – это координаты курсора мыши

btnno.Left += e.X;

if (btnno.Top < -10 || btnno.Top > 100)

btnno.Top = 60;

if (btnno.Left < -80 || btnno.Left > 250)

btnno.Left = 120;

}