方法 : OnEnter 機能を作成する
更新 : 2007 年 11 月
.NET Compact Framework では、各種コントロールで OnEnter メソッドおよび OnLeave メソッドをサポートしていません。ただし、OnMouseMove メソッドはサポートされているので、このメソッドおよび Capture プロパティを使用すると、マウス ポインタがコントロールの内部に入った時点およびコントロールの内部から出た時点を判断できます。
この例では、簡単なカスタム コントロール、MouseCapture を定義します。このコントロールは、マウス ポインタがコントロール内部にあるときは青、外部にあるときは明るい灰色で表示されます。マウス ポインタの座標がコントロールの ClientRectangle 内にあるかどうかは、OnMouseMove メソッドを使用して判断します。
コントロールの内部や外部をタップしても、コントロールの色は変更されません。ドラッグ アンド ドロップ操作などのように、マウスをドラッグしてください。
カスタム コントロールを作成および実装するには
カスタム コントロール 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; } }
フォームのコンストラクタまたは 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);
コードのコンパイル方法
この例では、次の名前空間への参照が必要です。