Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_po_programmirovaniyu_voprosy_21-40.docx
Скачиваний:
5
Добавлен:
25.09.2019
Размер:
90.14 Кб
Скачать

37. Обработка событий мыши.

Для обработки сообщений мыши в С# предусмотрен ряд событий, которые посылаются программе при совершении определенных действий. События посылаются, если вы передвинете курсор мыши, щелкните какой-нибудь кнопкой либо проделаете все эти действия одновременно. Для обработки сообщений от мыши у формы существуют следующие события

MouseDown — обработка нажатия какой-либо из кнопок вниз;

MouseEnter — вызывается при попадании указателя мыши в область формы;

MouseHover — вызывается при зависании указателя мыши в окне формы;

MouseLeave — вызывается при покидании курсора мыши области формы;

MouseMove — вызывается при движении мыши в области формы;

MouseUp — вызывается при отпускании кнопки мыши.

Параметр функции MouseEventArgs содержит всю информацию о кнопке, пославшей сообщение. Свойство MouseEventArgs.Button хранит информацию о типе кнопки (левая, правая, средняя).

Рассмотрим обработчик события мыши, который выводит в окне сообщение о том, какая кнопка мыши была нажата и координаты мыши на момент щелчка.

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

{

string text="";

MouseButtons button=e.Button;

if (button==MouseButtons.Left) text="левую";

if (button==MouseButtons.Right) text="правую";

string message="Вы щелкнули "+text+" кнопку мыши \n";

//вычислим координаты мыши на момент щелчка

message+=e.X.ToString()+","+e.Y.ToString();

MessageBox.Show(message); }

39. Делегаты. Определение и использование делегатов.

Делегат -  элемент языка C#, который позволяет ссылаться на метод (аналогично указателям на функции в C++).

Делегат - ссылка на метод. Все делегаты являются объектами типа System.Delegate или System.MulticastDelegate.

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

Когда мы располагаем на форме кнопку, мы знаем, что при наступлении события — нажатия на кнопку — что-то должно произойти: кнопка должна сообщить объекту или объектам, что мы нажали на нее. Однако, эти объекты еще могут быть не определены. Вместо того чтобы привязывать кнопку к конкретному объекту, мы связываем событие кнопки с делегатом, а когда приложение будет выполняться, назначим делегатом тот метод, который будет необходим.

class Class1

{

delegate void Mydelegate (string s);

//…продолжение кода.

}

Синаксис объявления делегата такой: сначала пишем ключевое слово delegate, затем — тип возвращаемого значения (void в нашем примере), потом — произвольное имя делегата (у нас это Mydelegate), после которого в круглых скобках перечисляем параметры (у нас только один параметр типа string).

class Class1

{

delegate void Mydelegate( string s);

static void Metod( string s)

{

Console.WriteLine(s);

}

//…продолжение кода.

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]