- •21. Графы, основные понятия теории графов, представление графов.
- •22. Алгоритмы обхода графа: обход в глубину.
- •23. Алгоритмы обхода графа: обход в ширину.
- •24. Деревья, бинарные деревья, дерево двоичного поиска.
- •25. Алгоритмы обхода дерева.
- •26. Обработка исключений, оператор try.
- •27. Обработка исключений, операторы checked, unchecked.
- •28. Генерация собственных исключений
- •29. Работа с файловой системой: классы File и FileInfo.
- •30. Работа с файловой системой: классы Directory и DirectoryInfo.
- •31. Механизм сборки мусора, жизненный цикл объекта, поколения объектов.
- •32. Программирование под Windows, событийно-управляемая модель.
- •33. Архитектура приложений Windows Forms
- •34. Стандартные элементы управления: текстовые поля, кнопки, переключатели.
- •35. Стандартные элементы управления: списки, окна диалога.
- •36. Динамическое создание и удаление элементов управления.
- •37. Обработка событий мыши.
- •39. Делегаты. Определение и использование делегатов.
- •40. События. Событийная модель “publisher/subscribers”
- •38. Обработка событий клавиатуры.
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);
}
//…продолжение кода.
}