方法 : OnEnter 機能を作成する

更新 : 2007 年 11 月

.NET Compact Framework では、各種コントロールで OnEnter メソッドおよび OnLeave メソッドをサポートしていません。ただし、OnMouseMove メソッドはサポートされているので、このメソッドおよび Capture プロパティを使用すると、マウス ポインタがコントロールの内部に入った時点およびコントロールの内部から出た時点を判断できます。

この例では、簡単なカスタム コントロール、MouseCapture を定義します。このコントロールは、マウス ポインタがコントロール内部にあるときは青、外部にあるときは明るい灰色で表示されます。マウス ポインタの座標がコントロールの ClientRectangle 内にあるかどうかは、OnMouseMove メソッドを使用して判断します。

コントロールの内部や外部をタップしても、コントロールの色は変更されません。ドラッグ アンド ドロップ操作などのように、マウスをドラッグしてください。

カスタム コントロールを作成および実装するには

  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. フォームのコンストラクタまたは Load イベントで MouseCapture のインスタンスを作成します。

    ' 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 に関する「方法」トピック