Что такое обработчик событий в windows forms
Для взаимодействия с пользователем в Windows Forms используется механизм событий. События в Windows Forms представляют стандартные события на C#, только применяемые к визуальным компонентам и подчиняются тем же правилам, что события в C#. Но создание обработчиков событий в Windows Forms все же имеет некоторые особенности.
Прежде всего в WinForms есть некоторый стандартный набор событий, который по большей части имеется у всех визуальных компонентов. Отдельные элементы добавляют свои события, но принципы работы с ними будут похожие. Чтобы посмотреть все события элемента, нам надо выбрать этот элемент в поле графического дизайнера и перейти к вкладке событий на панели форм. Например, события формы:
Чтобы добавить обработчик, можно просто два раза нажать по пустому полю рядом с названием события, и после этого Visual Studio автоматически сгенерирует обработчик события. Например, нажмем для создания обработчика для события Load :
И в этом поле отобразится название метода обработчика события Load. По умолчанию он называется Form1_Load .
Если мы перейдем в файл кода формы Form1.cs, то увидим автосгенерированный метод Form1_Load:
И при каждой загрузке формы будет срабатывать код в обработчике Form1_Load.
Как правило, большинство обработчиков различных визуальных компонентов имеют два параметра: sender — объект, инициировавший событие, и аргумент, хранящий информацию о событии (в данном случае EventArgs e ).
Но это только обработчик. Добавление же обработчика, созданного таким образом, производится в файле Form1.Designer.cs:
Для добавления обработчика используется стандартный синтаксис C#: this.Load += new System.EventHandler(this.Form1_Load)
Поэтому если мы захотим удалить созданный подобным образом обработчик, то нам надо не только удалить метод из кода формы в Form1.cs, но и удалить добавление обработчика в этом файле.
Однако мы можем добавлять обработчики событий и програмно, например, в конструкторе формы:
Обработка событий в Windows Forms
GUI управляется событиями. Приложение выполняет действия в ответ на события, вызванные пользователем, например, на щелчок кнопкой мыши или выбор пункта меню. Например, у каждой формы есть код, обрабатывающий событие MouseDown (Кнопка мыши нажата). В Windows Forms применяется модель обработки событий .NET, в которой делегаты используются для того, чтобы связать события с обрабатывающими их методами. В классах Windows Forms используются групповые делегаты. Групповой делегат содержит список связанных с ним методов. Когда в приложении происходит событие, управляющий элемент возбуждает событие, вызвав делегат для этого события. Потом делегат вызывает связанные с ним методы. Для того чтобы добавить делегат к событию используется перегруженный оператор +=. Например:
this.MouseClick += new MouseEventHandler(this.Form1_MouseClick);
Объявление обработчика для этого события:
private void Form1_MouseClick(object sender, MouseEventArgs e)
В качестве параметра обработчик событий получает объект класса МоuseEventArgs (производный от класса EventArgs). Свойства этого объекта доступны только для чтения и содержат информацию, связанную с данным событием.
· Button (Кнопка) определяет, какая кнопка была нажата,
· Clicks (Щелчки) определяет, сколько раз была нажата и отпущена кнопка,
· Свойство Delta (Дельта) является счетчиком оборотов колесика мыши;
· X и Y — координаты точки, в которой находился указатель в момент нажатия кнопки мыши
Внесем изменения в FirstForm, чтобы при щелчке любой кнопкой мыши строка с приветствием перемещалась на место щелчка.
//Программа 1: Отображает перемещение приветствия по щелчку мыши.
public partial class Form1 : Form <
Float x, y; // координаты
Brush pStdBrush; // Кисть
Graphics poGraphics;
public Form1() <
InitializeComponent();
pStdBrush = new SolidBrush(Color.Black);
poGraphics = this.CreateGraphics();
this.Text = «Программа 2»;
this.Show();
poGraphics.DrawString(«Hello, Window Forms», this.Font, pStdBrush, x, y);
private void Form1_MouseClick(object sender, MouseEventArgs e) <
x = (float)e.X; y = (float)e.Y; // координаты точки щелчка мыши
poGraphics.DrawString(«Hello, Window Forms», this.Font, pStdBrush, x, y);
Параметры метода DrawString:
· шрифт (Font— свойство класса Form, которое определяет шрифт, по умолчанию применяемый для вывода текста в форму),
· координаты в пикселях (числа типа float (с плавающей точкой)).
В качестве стандартной кисти используется черная кисть SolidBrush.
Во время инициализации программа связывает метод Form1_MouseClick с событием MouseClick. Этот метод устанавливает координаты текста, х и у, равными координатам точки, в которой находился указатель в момент щелчка.
Form. Shown Событие
Определение
Происходит при первом отображении формы. Occurs whenever the form is first displayed.
Тип события
Примеры
В следующем примере демонстрируется использование этого элемента. The following example demonstrates the use of this member. В этом примере обработчик событий сообщает о возникновении Shown события. In the example, an event handler reports on the occurrence of the Shown event. Этот отчет поможет вам узнать, когда происходит событие и может помочь при отладке. This report helps you to learn when the event occurs and can assist you in debugging. Чтобы сообщить о нескольких событиях или о событиях, которые происходят часто, рассмотрите возможность замены MessageBox.Show Console.WriteLine или добавления сообщения в многострочный TextBox . To report on multiple events or on events that occur frequently, consider replacing MessageBox.Show with Console.WriteLine or appending the message to a multiline TextBox.
Чтобы выполнить пример кода, вставьте его в проект, содержащий экземпляр типа Form с именем Form1 . To run the example code, paste it into a project that contains an instance of type Form named Form1 . Затем убедитесь, что обработчик событий связан с Shown событием. Then ensure that the event handler is associated with the Shown event.
Комментарии
ShownСобытие вызывается только при первом отображении формы; последующее свертывание, увеличение, восстановление, скрытие, отображение или невозможность, а также перерисовку не вызовет этого события. The Shown event is only raised the first time a form is displayed; subsequently minimizing, maximizing, restoring, hiding, showing, or invalidating and repainting will not raise this event. Дополнительные сведения о порядке событий формы см. в разделе Порядок событий в Windows Forms. For more information about the order of events of a form, see Order of Events in Windows Forms.
Дополнительные сведения об обработке событий см. в разделе обработка и вызов событий. For more information about handling events, see Handling and Raising Events.


