• Добро пожаловать на сайт - Forumteam.digital !

    Что бы просматривать темы форума необходимо зарегестрироваться или войти в свой аккаунт.

    Группа в телеграме (подпишитесь, что бы не потерять нас) - ForumTeam Chat [Подписатся]
    Связь с администратором - @ftmadmin

37. Отображаем координаты мыши.

Redman

<FORUMTEAM>
Команда форума
Регистрация
13.11.17
Сообщения
13.340
Реакции
8.377
Баллы
1.200
FTC
208¢
Данная программа показывает механизм использования обработчиков события передвижения мыши для формы и ее дочерних объектов.
Код:
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 - акселератор (горячая клавиша для выбора пункта меню).
 
Сверху Снизу