Обучающие курсы:

Обучение профессии "Разработчик C#" + стажировка в Mail.ru
Обучение профессии "Разработчик Python" + трудоустройство
Обучение профессии "Веб-разработчик" + стажировка в Mail.ru


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Практический пример. Отображение координат мыши при ее перемещении.

Данная программа показывает механизм использования обработчиков события передвижения мыши для формы и ее дочерних объектов.

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 - акселератор (горячая клавиша для выбора пункта меню).


 
 
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru