共用方式為


處理使用者輸入

更新:2007 年 11 月

本主題將描述 System.Windows.Forms.Control 所提供的主要鍵盤和滑鼠事件。在處理事件時,控制項作者應該覆寫保護的 OnEventName 方法,而不是附加委派 (Delegate) 至事件。如需檢視事件,請參閱從元件引發事件

注意事項:

如果沒有與事件相關聯的資料,會將基底類別 (Base Class) EventArgs 的執行個體 (Instance) 當做引數傳遞給 OnEventName 方法。

鍵盤事件

控制項可以處理的一般鍵盤事件為 KeyDownKeyPressKeyUp

事件名稱

要覆寫的方法

事件說明

KeyDown

void OnKeyDown(KeyEventArgs)

只有在按鍵初次按下時引發。

KeyPress

void OnKeyPress

(KeyPressEventArgs)

每次按鍵被按下時引發。如果按下按鍵不放,KeyPress 事件會以作業系統定義的重複率來引發。

KeyUp

void OnKeyUp(KeyEventArgs)

在放開按鍵時引發。

注意事項:

處理鍵盤輸入較覆寫前面表格中的事件更為複雜,而且超出這個主題的範圍。如需詳細資訊,請參閱 Windows Form 中的使用者輸入

滑鼠事件

控制項可以處理的滑鼠事件為 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 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 範例的完整原始程式碼,請參閱 HOW TO:建立顯示進度的 Windows Form 控制項

請參閱

概念

Windows Form 控制項中的事件

定義 Windows Form 控制項中的事件

其他資源

處理和引發事件

Windows Form 中的使用者輸入