- Автор темы
- #1
Данная программа показывает механизм использования обработчиков события передвижения мыши для формы и ее дочерних объектов.
Прелюдия к практическому примеру.
В данной главе рассматриваются некоторые моменты, присутствующие в следующем практическом примере (уже классическом) игре "Пятнашки".
Таймер
Класс System.Windows.Forms.Timer предназначен для инициирования события через определенные пользователем интервалы времени. Этот таймер оптимизирован для использования в приложениях Windows Forms, и должен быть использован для работы с окнами.
Свойства
Иерархия:
Некоторые методы и свойства
Код:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace CSharpApplication.MouseAndLabelAndButton
{
// Класс, содержащий форму, надпись и кнопку
class MouseCoords : Form
{
// Элемент управления Надпись
Label lCoords = new Label();
// Элемент управления Кнопка
Button bCoords = new Button();
static void Main()
{
// Запуск приложения
Application.Run(new MouseCoords());
}
// Конструктор
MouseCoords()
{
// Родитель
lCoords.Parent = this;
// Подгонка размеров под отображаемый текст
lCoords.AutoSize = true;
// Тонкая рамка
lCoords.BorderStyle = BorderStyle.FixedSingle;
// Обработчик движения мыши над поверхностью надписи
// для случая попадания мыши на клиентскую область надписи
lCoords.MouseMove += new MouseEventHandler(lCoords_MouseMove);
// Родитель
bCoords.Parent = this;
// Плоская кнопка
bCoords.FlatStyle = FlatStyle.Flat;
// Ширина
bCoords.Width = 100;
// Обработчик движения мыши над поверхностью кнопки
// для случая попадания мыши на клиентскую область кнопки
bCoords.MouseMove += new MouseEventHandler(bCoords_MouseMove);
// Заголовок формы
Text = "Бегаем за мышкой...";
// Форма отбражается в развернутом виде
WindowState = FormWindowState.Maximized;
}
// Обработчик передвижения мыши над поверхностью формы
protected override void OnMouseMove(MouseEventArgs ea)
{
// Вызов базового обработчика
base.OnMouseMove(ea);
// Определяем новое месторасположение надписи на форме
lCoords.Location = new Point(ea.X + 1, ea.Y);
// Отображаем на надписи клиентские координаты мыши
lCoords.Text = String.Format("X = {0,-5}Y = {1}", ea.X, ea.Y);
// Определяем новое месторасположение кнопки на форме
bCoords.Location = new Point(ea.X + 1, ea.Y - bCoords.Height);
// Отображаем на кнопке клиентские координаты мыши
bCoords.Text = String.Format("X = {0,-5}Y = {1}", ea.X, ea.Y);
}
// Обработчик передвижения мыши над поверхностью надписи
private void lCoords_MouseMove(object sender, MouseEventArgs ea)
{
// Вычисление месторасположения курсора мыши на форме
// с помощью преобразования экранных координат в
// координаты формы
Point pt = PointToClient(Control.MousePosition);
pt.X += 1;
// Перемещаем надпись
lCoords.Location = pt;
// Отображаем на надписи клиентские координаты мыши
lCoords.Text = String.Format("X = {0,-5}Y = {1}",
pt.X, pt.Y);
}
// Обработчик передвижения мыши над поверхностью кнопки
private void bCoords_MouseMove(object sender, MouseEventArgs e)
{
// Вычисление месторасположения курсора мыши на форме
// с помощью преобразования экранных координат в
// координаты формы
Point pt = PointToClient(Control.MousePosition);
pt.X += 1;
pt.Y -= bCoords.Height;
// Перемещаем кнопку
bCoords.Location = pt;
// Отображаем на кнопке клиентские координаты мыши
bCoords.Text = String.Format("X = {0,-5}Y = {1}",
pt.X, pt.Y);
}
}
}
Прелюдия к практическому примеру.
В данной главе рассматриваются некоторые моменты, присутствующие в следующем практическом примере (уже классическом) игре "Пятнашки".
Таймер
Класс System.Windows.Forms.Timer предназначен для инициирования события через определенные пользователем интервалы времени. Этот таймер оптимизирован для использования в приложениях Windows Forms, и должен быть использован для работы с окнами.
Свойства
- public virtual bool Enabled {get; set;} - определяет запущен ли таймер.
- public int Interval {get; set;} - время в миллисекундах между срабатываниями таймера.
- public void Start(); - запуск таймера.
- public void Stop(); - остановка таймера.
- public event EventHandler Tick; - возникает при окончании интервала срабатывания таймера (если таймер включен), инициируя новое событие.
Иерархия:
Код:
System.Object System.MarshalByRefObject System.ComponentModel.Component System.Windows.Forms.Menu System.Windows.Forms.MainMenu
Некоторые методы и свойства
Код:
public MainMenu(); - конструктор для создания меню без элементов
public MainMenu(MenuItem[] items); - конструктор для создания меню с набором элементов.
public Menu.MenuItemCollection MenuItems {get;} - получение коллекции элементов, ассоциированных с меню.
public virtual MainMenu CloneMenu(); - создание копии текущего меню
public Form GetForm(); - получение формы, содержащей меню (null - в случае отсутствия таковой).
public virtual void MergeMenu(Menu menuSrc); - слияние меню
public MenuItem(string text, EventHandler onClick, Shortcut shortcut); - конструктор для создания пункта меню.
text - заголовок пункта
onClick - обработчик выбора пункта меню
shortcut - акселератор (горячая клавиша для выбора пункта меню).