次の方法で共有


ユーザーの入力の処理

更新 : 2007 年 11 月

このトピックでは、System.Windows.Forms.Control によって提供される主要なキーボード イベントとマウス イベントについて説明します。イベントを処理する場合、コントロールの作成者はイベントにデリゲートをアタッチする代わりに、OnEventName プロテクト メソッドをオーバーライドする必要があります。イベントの詳細については、「コンポーネントからのイベントの生成」を参照してください。

メモ :

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

キーボード イベント

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

イベント名

オーバーライドするメソッド

イベントに関する説明

KeyDown

void OnKeyDown(KeyEventArgs)

初めてキーを押すときにだけ発生します。

KeyPress

void OnKeyPress

(KeyPressEventArgs)

キーを押すたびに発生します。キーを押したままの状態にすると、オペレーティング システムで定義されているリピート間隔で KeyPress イベントが発生します。

KeyUp

void OnKeyUp(KeyEventArgs)

キーを離すと発生します。

メモ :

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

マウス イベント

コントロールで処理できるマウス イベントには、MouseDownMouseEnterMouseHoverMouseLeaveMouseMove、および MouseUp などがあります。

イベント名

オーバーライドするメソッド

イベントに関する説明

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 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
protected override void OnMouseDown(MouseEventArgs e) {
    base.OnMouseDown(e);
    if (!allowUserEdit) {
        return;
    }
    Capture = true;
    dragging = true;
    SetDragValue(new Point(e.X, e.Y));
}

MouseMove イベントをオーバーライドするコード片の例を次に示します。

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
protected override void OnMouseMove(MouseEventArgs e) {
    base.OnMouseMove(e);
    if (!allowUserEdit || !dragging) {
        return;
    }
    SetDragValue(new Point(e.X, e.Y));
}

MouseUp イベントをオーバーライドするコード片の例を次に示します。

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
protected override void OnMouseUp(MouseEventArgs e) {
    base.OnMouseUp(e);
    if (!allowUserEdit || !dragging) {
        return;
    }
    Capture = false;
    dragging = false;
    value = dragValue;
    OnValueChanged(EventArgs.Empty);
}

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

参照

概念

Windows フォーム コントロールのイベント

Windows フォーム コントロールのイベントの定義

その他の技術情報

イベントの処理と発生

Windows フォームでのユーザー入力