ユーザーの入力の処理
このトピックでは、System.Windows.Forms.Control によって提供される主なキーボード イベントとマウス イベントについて説明します。 イベントを処理するときに、コントロール作成者はイベントにデリゲートを結び付けるのではなく、保護された On
EventName メソッドをオーバーライドする必要があります。 イベントのレビューについては、「コンポーネントからのイベントの生成」を参照してください。
注意
イベントにデータが関連付けられていない場合は、基底クラス EventArgs のインスタンスが引数として On
EventName メソッドに渡されます。
キーボード イベント
コントロールで処理できる一般的なキーボード イベントには、KeyDown、KeyPress、KeyUp があります。
イベント名 | オーバーライドするメソッド | イベントの説明 |
---|---|---|
KeyDown |
void OnKeyDown(KeyEventArgs) |
キーが最初に押されたときにのみ発生します。 |
KeyPress |
void OnKeyPress (KeyPressEventArgs) |
キーが押されるたびに発生します。 キーが押されると、オペレーティング システムによって定義されたリピート間隔で KeyPress イベントが発生します。 |
KeyUp |
void OnKeyUp(KeyEventArgs) |
キーが離されたときに発生します。 |
注意
キーボード入力の処理は、前の表のイベントをオーバーライドするよりもかなり複雑であり、このトピックでは触れていません。 詳細については、「 Windows フォームでのユーザー入力」を参照してください。
マウス イベント
コントロールで処理できるマウス イベントには、MouseDown、MouseEnter、MouseHover、MouseLeave、MouseMove、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 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 フォーム コントロールを作成する」を参照してください。
関連項目
.NET Desktop feedback