- Обзор обработчиков событий (Windows Forms) Event Handlers Overview (Windows Forms)
- Порядок событий в формах Windows Forms Order of Events in Windows Forms
- События запуска и завершения работы приложения Application Startup and Shutdown Events
- События, связанные с фокусом и проверками Focus and Validation Events
- Создание обработчиков событий в Windows Forms Creating Event Handlers in Windows Forms
- в этом разделе In This Section
- Связанные разделы Related Sections
- Введение в Windows Forms — пишем первую программу
Обзор обработчиков событий (Windows Forms) Event Handlers Overview (Windows Forms)
Обработчик событий — это метод, привязанный к событию. An event handler is a method that is bound to an event. При возникновении события выполняется код в обработчике событий. When the event is raised, the code within the event handler is executed. Каждый обработчик событий предоставляет два параметра, которые позволяют правильно управлять событием. Each event handler provides two parameters that allow you to handle the event properly. В следующем примере показан обработчик событий для Button события элемента управления Click . The following example shows an event handler for a Button control’s Click event.
Первый параметр, sender предоставляет ссылку на объект, который вызвал событие. The first parameter, sender , provides a reference to the object that raised the event. Второй параметр, e , в приведенном выше примере, передает объект, относящийся к обрабатываемому событию. The second parameter, e , in the example above, passes an object specific to the event that is being handled. Ссылаясь на свойства объекта (и иногда его методы), можно получить такие сведения, как расположение мыши для событий мыши или данных, передаваемых в событиях перетаскивания. By referencing the object’s properties (and, sometimes, its methods), you can obtain information such as the location of the mouse for mouse events or data being transferred in drag-and-drop events.
Обычно каждое событие создает обработчик событий с другим типом объекта события для второго параметра. Typically each event produces an event handler with a different event-object type for the second parameter. Некоторые обработчики событий, например MouseDown MouseUp события и, имеют один и тот же тип объекта для второго параметра. Some event handlers, such as those for the MouseDown and MouseUp events, have the same object type for their second parameter. Для этих типов событий можно использовать один и тот же обработчик событий для обработки обоих событий. For these types of events, you can use the same event handler to handle both events.
Можно также использовать один и тот же обработчик событий для обработки одного и того же события для различных элементов управления. You can also use the same event handler to handle the same event for different controls. Например, если RadioButton в форме имеется группа элементов управления, можно создать один обработчик событий для Click события и связать событие каждого элемента управления Click с одним обработчиком событий. For example, if you have a group of RadioButton controls on a form, you could create a single event handler for the Click event and have each control’s Click event bound to the single event handler. Дополнительные сведения см. в разделе руководство. Подключение нескольких событий к одному обработчику событий в Windows Forms. For more information, see How to: Connect Multiple Events to a Single Event Handler in Windows Forms.
Порядок событий в формах Windows Forms Order of Events in Windows Forms
Особый интерес для разработчиков представляет порядок, в котором вызываются события в приложениях Windows Forms, для обеспечения обработки каждого из этих событий в свою очередь. The order in which events are raised in Windows Forms applications is of particular interest to developers concerned with handling each of these events in turn. Если ситуация требует аккуратной обработки событий, например когда производится перерисовка части формы, то необходимо знать точный порядок, в котором вызываются события во время выполнения. When a situation calls for meticulous handling of events, such as when you are redrawing parts of the form, an awareness of the precise order in which events are raised at run time is necessary. В этом разделе приведены некоторые сведения о порядке событий, возникающих на нескольких важных этапах жизненного цикла приложений и элементов управления. This topic provides some details on the order of events during several important stages in the lifetime of applications and controls. Конкретные сведения о порядке событий ввода мыши см. в разделе события мыши в Windows Forms. For specific details about the order of mouse input events, see Mouse Events in Windows Forms. Общие сведения о событиях в Windows Forms см. в разделе Общие сведения о событиях. For an overview of events in Windows Forms, see Events Overview. Дополнительные сведения о описывающего обработчиков событий см. в разделе Общие сведения об обработчиках событий. For details about the makeup of event handlers, see Event Handlers Overview.
События запуска и завершения работы приложения Application Startup and Shutdown Events
Классы Form и Control предоставляют набор событий, связанных с запуском и завершением приложения. The Form and Control classes expose a set of events related to application startup and shutdown. При запуске приложения Windows Forms события запуска главной формы вызываются в следующем порядке: When a Windows Forms application starts, the startup events of the main form are raised in the following order:
При закрытии приложения события запуска главной формы вызываются в следующем порядке: When an application closes, the shutdown events of the main form are raised in the following order:
Событие ApplicationExit класса Application вызывается после событий завершения работы основной формы. The ApplicationExit event of the Application class is raised after the shutdown events of the main form.
В Visual Basic 2005 содержатся дополнительные события приложений, такие как WindowsFormsApplicationBase.Startup и WindowsFormsApplicationBase.Shutdown. Visual Basic 2005 includes additional application events, such as WindowsFormsApplicationBase.Startup and WindowsFormsApplicationBase.Shutdown.
События, связанные с фокусом и проверками Focus and Validation Events
При изменении фокуса с помощью клавиатуры (при нажатии клавиш TAB, SHIFT+TAB и так далее), путем вызова методов Select или SelectNextControl, либо присвоением свойства ActiveControl текущей форме, события фокуса ввода класса Control происходят в следующем порядке: When you change the focus by using the keyboard (TAB, SHIFT+TAB, and so on), by calling the Select or SelectNextControl methods, or by setting the ActiveControl property to the current form, focus events of the Control class occur in the following order:
При изменении фокуса ввода с помощью мыши или путем вызова метода Focus события фокуса класса Control происходят в следующем порядке. When you change the focus by using the mouse or by calling the Focus method, focus events of the Control class occur in the following order:
Создание обработчиков событий в Windows Forms Creating Event Handlers in Windows Forms
Обработчик событий — это процедура в коде, определяющая, какие действия должны выполняться при возникновении тех или иных событий, например, если пользователь нажимает кнопку или сообщение поступает в очередь. An event handler is a procedure in your code that determines what actions are performed when an event occurs, such as when the user clicks a button or a message queue receives a message. При порождении события запускается получивший его обработчик или несколько обработчиков. When an event is raised, the event handler or handlers that receive the event are executed. События могут назначаться сразу нескольким обработчикам, а методы, которые управляют конкретными событиями, можно изменять динамически. Events can be assigned to multiple handlers, and the methods that handle particular events can be changed dynamically. Для создания обработчиков событий также можно использовать конструктор Windows Forms в Visual Studio. You can also use the Windows Forms Designer in Visual Studio to create event handlers.
в этом разделе In This Section
Общие сведения о событиях Events Overview
Объясняет модель событий и роли делегатов. Explains the event model and the role of delegates.
Общие сведения об обработчиках событий Event Handlers Overview
Описывает порядок обработки событий. Describes how to handle events.
Практические руководства. Создание обработчиков событий во время выполнения для Windows Forms How to: Create Event Handlers at Run Time for Windows Forms
Динамически выдает инструкции по реагированию на системные или пользовательские события. Gives directions for responding to system or user events dynamically.
Как подключить несколько событий к одному обработчику событий в Windows Forms How to: Connect Multiple Events to a Single Event Handler in Windows Forms
Выдает инструкции по назначению одной и той же функциональности нескольким элементам управления с помощью событий. Gives directions for assigning the same functionality to multiple controls through events.
Порядок событий в Windows Forms Order of Events in Windows Forms
Описывает порядок порождения событий в элементах управления Windows Forms. Describes the order in which events are raised in Windows Forms controls.
Инструкции. Создание обработчиков событий с помощью конструктора Описывает, как использовать конструктор Windows Forms для создания обработчиков событий. How to: Create Event Handlers Using the Designer Describes how to use the Windows Forms Designer to create event handlers.
Связанные разделы Related Sections
Событиях Events
Содержит ссылки на разделы, посвященные обработке и вызову событий с помощью .NET Framework. Provides links to topics on handling and raising events using the .NET Framework.
Устранение неполадок унаследованных обработчиков событий в Visual Basic Troubleshooting Inherited Event Handlers in Visual Basic
Представляет распространенные проблемы, возникающие у обработчиков событий в наследуемых компонентах. Lists common issues that occur with event handlers in inherited components.
Введение в Windows Forms — пишем первую программу
В данной статье будет рассказано о том как написать простой обработчик событий на C++ для приложения Windows Forms, работающего под управления .NET Framework. Мы создадим простейшую Windows программу, которая вычисляет факториал целого числа. Для написания данной программы Вам понадобится Visual Studio 2008 Express Edition или Professional.
Для начала создадим проект.
Откроем Visual Studio, далее жмем Файл→Создать→Проект, далее выбираем пункт CLR и отмечаем Приложение Windows Forms, даем имя проекта, к примеру factr и жмем Ok.
После того как мы создали проект, должна появиться пустая форма, которая должна выглядеть примерно так:
Справа должна появиться панель элементов, если ее нет, то можно включить ее в меню Вид→Панель Элементов или нажатием горячих клавиш — Ctrl + Alt + X.
На ней расположены различные элементы для вставки в форму, нам понадобятся только элементы Button (Кнопка), Label (Надпись) и TextBox (Текстовое поле). Перетащите на форму три элемента Label, Два элемента TextBox, и одну кнопку (Button), расставьте элементы примерно так:
Теперь нам нужно будет изменить текст надписей для элементов Label и Button и Задать подходящие имена классов для элементов TextBox. Для этого Выделите элемент label1, перейдите в Панель свойств, (обычно она находится под Панелью элементов, если панель выключена, включите ее в меню Вид -> Диспетчер свойств.) и задайте для данного элемента значение атрибута Text как показано на рисунке.
Задайте атрибут Text для всех элементов Label и Кнопки Button аналогичным образом. Наша форма должна принять примерно следующий вид:
Я сделал кнопку развернуть неактивной, так как изменение размеров данной формы испортит ее внешний вид, Вы также можете это сделать, щелкнув левой кнопкой мыши на пустом месте формы и в Панели свойств задать для атрибута MaximizeBox параметр False.
Теперь задайте для текстовых полей (TextBox) Атрибуты Name в Панели Свойств – для первого поля это будет num1, а для второго, соответственно num2. Тем самым мы изменили имена классов для полей TextBox, чуть позднее Вы поймете зачем.
Итак, каркас формы готов, если откомпилировать и запустить программу, то мы увидим, какой будет наша форма на финише, правда сейчас она совершенно бесполезна. Перейдем к написанию обработчика событий для кнопки Button, т.е. что будет происходить при нажатии на эту кнопку, также мы напишем саму функцию вычисления факториала, которую мы будем использовать в обработчике.
Первым делом нужно добавить заголовочный файл fact.h в проект, для этого щелкаем правой кнопкой мыши в Обозревателе решений на папке Заголовочные файлы, далее меню Добавить -> Создать Элемент, вписываем название файла – fact.h и нажимаем Добавить. В данном файле будет содержаться прототип функции для вычисления факториала. Добавляем туда следующий исходный код.
Далее подключаем этот файл к проекту с помощью директивы #include – Открываем файл factr.cpp и добавляем после строчки #include «stdafx.h» следующий код.
Теперь наш заголовочный файл подключен к проекту, далее аналогичным образом создаем файл исходного кода fact.cpp в проект.
В него добавляем саму функцию вычисления факториала целого числа.
Теперь наш проект содержит функцию вычисления факториала, откомпилируйте его, если ошибок нет, то можно приступить к написанию обработчика событий для кнопки Button.
Открываем файл Form.h, в нем мы видим визуальное представление нашей формы. Щелкаем двойным щелчком на кнопке Button и переходим к исходному коду.
После фигурной скобки ставим абзац и приступаем к кодированию. Любой набор символов, которые мы вводим с клавиатуры в текстовое поле программы является строкой, поэтому нам нужно вытащить значение из текстового поля и привести его к целочисленному типу. Это довольно сложная процедура, но, к счастью в языке C++ уже есть множество функций, выполняющих конвертирование типов данных. Сначала нам необходимо описать и инициализировать переменную, в которой будет храниться значение числа, для которого должен быть вычислен факториал. Добавим в том место, где Вы поставили абзац следующий код:
Эта строка инициализирует переменную, которая хранит в себе число для вычисления его факториала. Далее нам нужно будет произвести вызов нашей функции fact с переменной number в качестве единственного аргумента и занести результат работы функции в новую переменную factor.
И затем преобразовать полученное значение обратно в строку и присвоить его второму текстовому полю.
Таким образом, наш простой обработчик событий будет выглядеть вот так:
Теперь можно скомпилировать и запустить готовую программу и проверить ее. Помните, что тип double в С++ может хранить число не превышающее !170.
Результат работы программы можно проверить в инженерном калькуляторе Windows.