netlib.narod.ru< Назад | Оглавление | Далее >

Входим, проходим, покидаем

Вот последние три события мыши:


События Control (выборочно)



Событие Метод Делегат Аргумент

MouseEnter OnMouseEnter EventHandler EventArgs
MouseLeave OnMouseLeave EventHandler EventArgs
MouseHover OnMouseHover EventHandler EventArgs


Событие MouseEnter указывает элементу управления (или клиентской области формы) о входе курсора мыши в область над этим элементом управления. Возможно, в ответ на это событие должен измениться вид элемента управления. Событие MouseLeave сообщает элементу управления, что курсор мыши покинул область над этим элементом управления.

Событие MouseHover происходит, когда курсор остановился, войдя в область над элементом управления или в клиентскую область формы. Обычно оно имеет место между событиями MouseEnter и MouseLeave.

Вот программа, визуализирующая эти три события. После вызова OnMouseEnter клиентская область закрашивается зеленым, а после вызова OnMouseLeave восстанавливается ее обычный цвет — цвет фона. В ответ на OnMouseHover клиентская область на 1/10 секунды окрашивается в красный цвет.

EnterLeave.cs

  //-------------------------------------------
  // EnterLeave.cs (C) 2001 by Charles Petzold
  //-------------------------------------------
  using System;
  using System.Drawing;
  using System.Windows.Forms;

  class EnterLeave: Form
  {
      bool bInside = false;

      public static void Main()
      {
          Application.Run(new EnterLeave());
      }
      public EnterLeave()
      {
          Text = "Enter/Leave";
      }
      protected override void OnMouseEnter(EventArgs ea)
      {
          bInside = true;
          Invalidate();
      }
      protected override void OnMouseLeave(EventArgs ea)
      {
          bInside = false;
          Invalidate();
      }
      protected override void OnMouseHover(EventArgs ea)
      {
          Graphics grfx = CreateGraphics();

          grfx.Clear(Color.Red);
          System.Threading.Thread.Sleep(100);
          grfx.Clear(Color.Green);
          grfx.Dispose();
      }
      protected override void OnPaint(PaintEventArgs pea)
      {
          Graphics grfx = pea.Graphics;

          grfx.Clear(bInside ? Color.Green : BackColor);
      }
  }

netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz