请单击以进行评分并提供反馈

  开启低带宽视图
此页面仅适用于
Microsoft Visual Studio 2005/.NET Framework 2.0

同时提供下列产品的其他版本:
Windows 窗体编程
处理用户输入

本主题描述了由 System.Windows.Forms.Control 提供的主键盘和鼠标事件。处理事件时,控件作者应该重写受保护的 OnEventName 方法,而不是向事件附加委托。若要查看事件,请参见从组件引发事件

Note注意

如果没有与事件关联的数据,则会将基类 EventArgs 的一个实例作为参数传递给 OnEventName 方法。

键盘事件

您的控件可以处理的常见键盘事件包括 KeyDownKeyPressKeyUp

事件名称 要重写的方法 事件说明

KeyDown

void OnKeyDown(KeyEventArgs)

仅在开始按下键时引发。

KeyPress

void OnKeyPress

(KeyPressEventArgs)

每次按键时引发。如果一直按住某个键,则按操作系统定义的重复速率引发 KeyPress 事件。

KeyUp

void OnKeyUp(KeyEventArgs)

释放键时引发。

Note注意

处理键盘输入比重写上表中的事件要复杂得多,这超出了本主题的讨论范围。有关更多信息,请参见 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 事件的例子。

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

下面的代码片段演示了重写 MouseMove 事件的例子。

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

下面的代码片段演示了重写 MouseUp 事件的例子。

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

有关 FlashTrackBar 示例的完整源代码,请参见如何:创建显示进度的 Windows 窗体控件

请参见

社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利  |  商标  |  隐私权声明
Page view tracker