Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 457
Эндрю Троелсен
Чтобы продемонстрировать возможности применения некоторых членов класса Control, давайте построим новую форму, способную обеспечивать следующее.
• Отвечать на события MouseMove и MouseDown.
• Выполнять захват и обработку ввода с клавиатуры, реагируя на событие KeyUp.
Для начала создайте новый класс, производный от Form. В конструкторе, заданном по умолчанию, мы используем различные наследуемые свойства, чтобы задать исходный вид и поведение формы. Обратите внимание на то, что здесь нужно указать использование пространства имён System.Drawing поскольку необходимо получить доступ к структуре Color (пространство имен System.Drawing будет рассмотрено в следующей главе).
using System;
using System.Windows.Forms;
using System.Drawing;
namespace MyWindowsApp {
public class MainWindow: Form {
publiс MainWindow() {
// Использование наследуемых свойств для установки
// характеристик интерфейса пользователя.
Text = "Моя фантастическая форма";
Height = 300;
Width = 500;
BackColor = Color.LemonChiffon;
Cursor = Cursors.Hand;
}
}
public static class Program {
static void Main(string[] args) {
}
}
}
Скомпилируйте это приложение в его текущем виде, просто чтобы проверить что вы не допустили никаких опечаток.
csc /target:winexe *.cs
Ответ на события MouseMove
Далее, мы должны обработать событие MouseMove. Целью является отображение текущих координат (x, у) указателя в области заголовка формы. Все связанные с состоянием мыши события (MouseMove. MouseUp и т.д.) работают в паре с делегатом MouseEventHandler, способным вызвать любой метод, соответствующий следующей сигнатуре.
void MyMouseHandler(object sender, MouseEventArgs e);
Поступающая на вход структура MouseEventArgs расширяет общий базовый класс EventArgs путем добавления целого ряда членов, специально предназначенных для обработки действий мыши (табл. 19.6).
Таблица 19.6. Свойства типа MouseEventArgs
Свойство | Описание |
---|---|
Button | Содержит информацию о том, какая клавиша мыши была нажата, в соответствии с определением перечня MouseButtons |
Clicks | Содержит информацию о том, сколько раз была нажата и отпущена клавиша мыши |
Delta | Содержит значение со знаком, соответствующее числу щелчков, произошедших при вращении колесика мыши |
X | Содержит информацию о координате |
Y | Содержит информацию о координате |
Вот обновленный класс MainForm, в котором обработка события MouseMove происходит так, как предполагается выше.
public class MainForm: Form {
public MainForm() {
…
// Для обработки события MouseMove.
MouseMove += new MouseEventHandler(MainForm_MouseMove);
}
// Обработчик события MouseMove.
public void MainForm_MouseMove(object sender, MouseEventArgs e) {
Text = string. Format ("Текущая позиция указателя: ({0}, {1})