Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет: Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.
Как активировать код? |
Классы Application и Form
Функциональные возможности класса Form, наследуемые от класса Control
Класс Control определяет общее поведение элементов управления и самой формы, так как является их базовым классом. Он содержит множество свойств, методов и событий, позволяющих реагировать на изменение состояния мыши, клавиатуры, действия выделения и перетаскивания объектов, другие действия.
Все события дублируются защищенными ( protected ) виртуальными ( virtual ) перегружаемыми ( override ) методами (готовыми зарегистрированными обработчиками) и даже таких методов значительно больше. Каждый из этих методов снабжен префиксом On (например, OnClick(), OnPaint() и т.д.). Перегрузив такой метод в производном классе, мы получаем возможность выполнить какие-то предварительные действия перед вызовом родительской реализации обработчика события.
Все связанные с состоянием мыши события работают в паре с делегатом MouseEventHandler, способному адресоваться к любому методу, удовлетворяющему сигнатуре
void MyMouseHandler(object sender, MouseEventArgs e);
Поступающий на вход обработчика объект класса MouseEventArgs расширяет наследуемый им класс EventArgs путем добавления целого ряда членов, специально предназначенных для обработки действий мыши.
Свойство | Описание |
---|---|
Button | Содержит информацию о том, какая клавиша мыши была нажата в соответствии с перечислением System.Windows.Forms.MouseButtons |
Clicks | Возвращает число нажатий и отпусканий клавиши мыши |
Delta | Содержит цену щелчка при вращении колеса мыши |
X, Y | Координаты указателя мыши относительно начала координат клиента |
Обработка событий клавиатуры подобна обработке событий мыши. Все связанные с состоянием клавиатуры события работают в паре с делегатом KeyEventHandler, способному адресоваться к любому методу, удовлетворяющему сигнатуре
void MyKeyboardHandler(object sender, KeyEventArgs e);
Поступающий на вход обработчика объект класса KeyEventArgs расширяет наследуемый им класс EventArgs путем добавления целого ряда членов, специально предназначенных для обработки действий клавиатуры.
Свойство | Описание |
---|---|
Alt | Содержит значение, являющееся индикатором нажатия клавиши Alt |
Control | Содержит значение, являющееся индикатором нажатия клавиши Ctrl |
Handled | Читает или устанавливает значение, являющееся индикатором полного завершения обработки события обработчиком |
KeyCode | Возвращает клавишный код для событий KeyDown или KeyUp |
Modifiers | Указывает, какие модифицирующие клавиши были нажаты ( Ctrl, Shift и/или Alt ) |
Shift | Содержит значение, являющееся индикатором нажатия клавиши Shift |
Класс Control содержит ряд и других методов, например
- Hide() - скрывает элемент управления, присваивая свойству Visible значение false
- Show() - делает элемент управления видимым, устанавливая для его свойства Visible значение true
- Invalidate() - заставляет элемент управления обновить свое изображение, посылая событие Paint
Приведем пример приложения, в котором построим новую форму, способную обеспечить следующее
- Отвечать на события мыши
- Выполнять захват и обработку ввода с клавиатуры, реагируя на событие KeyUp
-
Добавьте к нашему решению MySolution4 новый пустой проект с именем MyEventHandler командой File/Add/New Project
-
Добавьте к проекту MyEventHandler ссылки на библиотечные сборки System.dll, System.Drawing.dll, System.Windows.Forms.dll
-
Добавьте два новых пустых файла с именем GeneralForm.cs и Program.cs
-
Установите тип сборки проекта Windows Application
-
Заполните файлы проекта следующим кодом
using System; using System.Windows.Forms; using System.Drawing; namespace MyEventHandler { class GeneralForm : Form { Label lblMouseMove, lblMouseWheel, lblMouseClicks; string lblTitleMouseMove = "Координаты мыши: "; string lblTitleMouseWheel = "Цена щелчка поворота колеса: "; string lblTitleMouseClicks = "Число щелчков мышью: "; public GeneralForm() { // Настройка формы this.Text = "Обработка событий Control"; this.Width = System.Convert.ToInt32(1.2 * this.Width); Label lbl = new Label(); // Настройка меток lbl.Location = new Point(20, 5); lbl.AutoSize = true; lbl.Parent = this; lbl.Text = lblTitleMouseMove; lblMouseMove = lbl;// Настроили объект и отдали lbl = new Label();// Прежняя ссылка с новым адресом lbl.Location = new Point(20, lblMouseMove.Location.Y + lbl.Height + 10); lbl.AutoSize = true; lbl.Parent = this; lbl.Text = lblTitleMouseWheel; lblMouseWheel = lbl;// Настроили объект и отдали lbl = new Label();// Прежняя ссылка с новым адресом lbl.Location = new Point(20, lblMouseWheel.Location.Y + lbl.Height + 10); lbl.AutoSize = true; lbl.Parent = this; lbl.Text = lblTitleMouseClicks; lblMouseClicks = lbl;// Настроили объект и отдали lbl = null; // Больше не нужен } protected override void OnMouseMove(MouseEventArgs e) { lblMouseMove.Text = String.Format(lblTitleMouseMove + "x={0}; y={1}", e.X, e.Y); base.OnMouseMove(e); } int countClicks = 0; protected override void OnMouseUp(MouseEventArgs e) { countClicks += e.Clicks; lblMouseClicks.Text = String.Format (lblTitleMouseClicks + countClicks); string title = "Событие формы"; switch (e.Button) { case MouseButtons.Left: MessageBox.Show("Щелкнули левой кнопкой", title); break; case MouseButtons.Right: MessageBox.Show("Щелкнули правой кнопкой", title); break; case MouseButtons.Middle: MessageBox.Show("Щелкнули средней кнопкой", title); break; } base.OnMouseUp(e); } protected override void OnMouseWheel(MouseEventArgs e) { lblMouseWheel.Text = String.Format(lblTitleMouseWheel + e.Delta); base.OnMouseWheel(e); } protected override void OnKeyUp(KeyEventArgs e) { MessageBox.Show("Нажата клавиша: " + e.KeyCode.ToString(), "Нажали клавишу"); base.OnKeyUp(e); } } }Листинг 12.5 . Код файла GeneralForm.cs
using System; using System.Windows.Forms; namespace MyEventHandler { class EntryPoint { static void Main() { Application.EnableVisualStyles(); Application.Run(new GeneralForm()); } } }Листинг 12.6 . Код файла Program.cs
Здесь мы воспользовались перегрузкой виртуальных методов-обработчиков событий, в которых выполнили предварительную обработку данных и вызвали обработчик родительского класса для корректного завершения обработки.
-
Установите проект MyEventHandler стартовым, выполнив на нем в панели Solution Explorer команду Set as StartUp Project контектсного меню
-
Запустите проект и проверьте его работу