Поделиться через


Практическое руководство. Создание функциональности OnEnter

Обновлен: Ноябрь 2007

Платформа .NET Compact Framework не поддерживает методы OnEnter и OnLeave для элементов управления. Тем не менее, поскольку поддерживается метод OnMouseMove, этот метод и свойство Capture можно использовать для определения момента, когда указатель мыши появляется над элементом управления или покидает его.

В этом примере определяется простой пользовательский элемент управления, MouseCapture, который имеет синий цвет, если передвижение указателя мыши происходит внутри элемента управления, и светло-серый цвет, если указатель мыши перемещается вне элемента управления. Для этого с помощью метода OnMouseMove осуществляется проверка попадания указателя мыши в его прямоугольник ClientRectangle.

Обратите внимание, что касание элемента управления не изменяет его цвет. Необходимо перетаскивать указатель мыши, как при операции перетаскивания.

Создание и реализация пользовательского элемента управления

  1. Добавьте в проект пользовательский элемент управления MouseCapture.

    Public Class MouseCapture
       Inherits Control
    
       Public Sub New()
          Me.BackColor = Color.LightGray
       End Sub 'New
    
    
       ' If the mouse is over the control, Capture is true. 
       Protected Overrides Sub OnMouseMove(e As MouseEventArgs)
          Me.Capture = Me.ClientRectangle.Contains(e.X, e.Y)
          If Me.Capture Then
             ' Blue indicates inside the control.
             Me.BackColor = Color.Blue
          Else
             Me.BackColor = Color.LightGray
          End If
       End Sub 
    End Class
    
    public class MouseCapture : Control
    {
        public MouseCapture()
        {
            this.BackColor = Color.LightGray;
        }
    
        // If the mouse is over the custom control, Capture is true.
        protected override void OnMouseMove(MouseEventArgs e)
        {
            this.Capture = this.ClientRectangle.Contains(e.X, e.Y);
            if (this.Capture == true)
                this.BackColor = Color.Blue;
            else
                this.BackColor = Color.LightGray;
        }
    }
    
  2. Создайте экземпляр MouseCapture в конструкторе формы или для ее события Load.

    ' Assumes mc has been delared
    ' for the form as type MouseCapture.
      Dim mc As New MouseCapture()
      mc.Parent = Me
      mc.Bounds = New Rectangle(20, 50, 100, 50)
    
    // Assumes mc has been delared
    // for the form as type MouseCapture.
    mc = new MouseCapture();
    mc.Parent = this;
    mc.Bounds = new Rectangle(20, 50, 100, 50);
    

Компиляция кода

Для этого примера требуются ссылки на следующие пространства имен:

См. также

Основные понятия

Разработка пользовательского элемента управления

Разделы руководства по платформе .NET Compact Framework