ユーザーの入力の処理
このトピックでは、System.Windows.Forms.Control によって提供される主要なキーボード イベントとマウス イベントについて説明します。イベントを処理する場合、コントロールの作成者はイベントにデリゲートをアタッチする代わりに、OnEventName プロテクト メソッドをオーバーライドする必要があります。イベントの詳細については、「コンポーネントからのイベントの生成」を参照してください。
注意
イベントに関連付けられているデータがない場合には、OnEventName メソッドの引数として EventArgs 基本クラスのインスタンスが渡されます。
キーボード イベント
コントロールで処理できる一般的なキーボード イベントとして、KeyDown、KeyPress、KeyUp などがあります。
イベント名 | オーバーライドするメソッド | イベントに関する説明 |
---|---|---|
KeyDown |
|
初めてキーを押すときにだけ発生します。 |
KeyPress |
|
キーを押すたびに発生します。キーを押したままの状態にすると、オペレーティング システムで定義されているリピート間隔で KeyPress イベントが発生します。 |
KeyUp |
|
キーを離すと発生します。 |
注意
キーボードからの入力の処理は、上記の表に示すイベントのオーバーライドよりもかなり複雑です。キーボードからの入力の処理については、このトピックでは詳しく説明しません。詳細については、「Windows フォームでのユーザー入力」を参照してください。
マウス イベント
コントロールで処理できるマウス イベントには、MouseDown、MouseEnter、MouseHover、MouseLeave、MouseMove、および MouseUp などがあります。
イベント名 | オーバーライドするメソッド | イベントに関する説明 |
---|---|---|
MouseDown |
|
ポインタがコントロール上に置かれている状態でマウス ボタンを押すと発生します。 |
MouseEnter |
|
コントロール領域内にポインタが初めて入るときに発生します。 |
MouseHover |
|
ポインタがコントロール上を移動するときに発生します。 |
MouseLeave |
|
コントロール領域内からポインタが出るときに発生します。 |
MouseMove |
|
コントロール領域内でポインタを移動すると発生します。 |
MouseUp |
|
ポインタがコントロールに置かれた状態でマウス ボタンを離すか、またはコントロール領域からポインタが出るときに発生します。 |
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 フォーム コントロールのイベントの定義