ユーザーの入力の処理

このトピックでは、System.Windows.Forms.Control によって提供される主なキーボード イベントとマウス イベントについて説明します。 イベントを処理するときに、コントロール作成者はイベントにデリゲートを結び付けるのではなく、保護された OnEventName メソッドをオーバーライドする必要があります。 イベントのレビューについては、「コンポーネントからのイベントの生成」を参照してください。

注意

イベントにデータが関連付けられていない場合は、基底クラス EventArgs のインスタンスが引数として OnEventName メソッドに渡されます。

キーボード イベント

コントロールで処理できる一般的なキーボード イベントには、KeyDownKeyPressKeyUp があります。

イベント名 オーバーライドするメソッド イベントの説明
KeyDown void OnKeyDown(KeyEventArgs) キーが最初に押されたときにのみ発生します。
KeyPress void OnKeyPress

(KeyPressEventArgs)
キーが押されるたびに発生します。 キーが押されると、オペレーティング システムによって定義されたリピート間隔で KeyPress イベントが発生します。
KeyUp void OnKeyUp(KeyEventArgs) キーが離されたときに発生します。

注意

キーボード入力の処理は、前の表のイベントをオーバーライドするよりもかなり複雑であり、このトピックでは触れていません。 詳細については、「 Windows フォームでのユーザー入力」を参照してください。

マウス イベント

コントロールで処理できるマウス イベントには、MouseDownMouseEnterMouseHoverMouseLeaveMouseMoveMouseUp があります。

イベント名 オーバーライドするメソッド イベントの説明
MouseDown void OnMouseDown(MouseEventArgs) ポインターがコントロール上にある状態でマウス ボタンが押されると発生します。
MouseEnter void OnMouseEnter(EventArgs) ポインターがコントロールの領域に初めて入ったときに発生します。
MouseHover void OnMouseHover(EventArgs) ポインターがコントロールの上に置かれたときに発生します。
MouseLeave void OnMouseLeave(EventArgs) ポインターがコントロールの領域から離れると発生します。
MouseMove void OnMouseMove(MouseEventArgs) ポインターがコントロールの領域内で移動すると発生します。
MouseUp void OnMouseUp(MouseEventArgs) ポインターがコントロールの上にある状態でマウス ボタンが離されるか、ポインターがコントロールの領域から離れると発生します。

次のコード フラグメントは、MouseDown イベントをオーバーライドする例を示しています。

protected override void OnMouseDown(MouseEventArgs e) {
    base.OnMouseDown(e);
    if (!allowUserEdit) {
        return;
    }
    Capture = true;
    dragging = true;
    SetDragValue(new Point(e.X, e.Y));
}
Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
    MyBase.OnMouseDown(e)
    If Not (myAllowUserEdit) Then
        Return
    End If
    Capture = True
    dragging = True
    SetDragValue(New Point(e.X, e.Y))
End Sub

次のコード フラグメントは、MouseMove イベントをオーバーライドする例を示しています。

protected override void OnMouseMove(MouseEventArgs e) {
    base.OnMouseMove(e);
    if (!allowUserEdit || !dragging) {
        return;
    }
    SetDragValue(new Point(e.X, e.Y));
}
Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
    MyBase.OnMouseMove(e)
    If (Not myAllowUserEdit Or Not dragging) Then
        Return
    End If
    SetDragValue(New Point(e.X, e.Y))
End Sub

次のコード フラグメントは、MouseUp イベントをオーバーライドする例を示しています。

protected override void OnMouseUp(MouseEventArgs e) {
    base.OnMouseUp(e);
    if (!allowUserEdit || !dragging) {
        return;
    }
    Capture = false;
    dragging = false;
    value = dragValue;
    OnValueChanged(EventArgs.Empty);
}
Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
    MyBase.OnMouseUp(e)
    If (Not myAllowUserEdit Or Not dragging) Then
        Return
    End If
    Capture = False
    dragging = False
    Value = dragValue
    OnValueChanged(EventArgs.Empty)
End Sub

FlashTrackBar サンプルの完全なソース コードについては、「方法 : 進行状況を示す Windows フォーム コントロールを作成する」を参照してください。

関連項目