Windows 窗体中的事件顺序

Windows 窗体中的事件顺序

对于关注对 Windows 应用程序中引发的每个事件按次序进行处理的开发人员来说,事件引发的顺序特别重要。当某种情况需要小心处理事件时(如重绘窗体的某些部分时),必须知道事件在运行时的确切引发顺序。有关 Windows 窗体中事件的概述,请参见 Windows 窗体中事件的介绍。有关事件处理程序的构成的详细信息,请参见 Windows 窗体中事件处理程序的介绍

Windows 窗体结构的另一个方面将在对 Windows 窗体背后 Visual Basic 代码的解析中进行说明。

标准 Click 事件引发行为

当按下并释放鼠标按钮(无论哪一个按钮)时,除对个别控件有说明外,所有 Windows 窗体控件都会以相同顺序引发事件。以下是鼠标按钮单击所引发的事件的顺序:

  1. MouseDown 事件。
  2. Click 事件。
  3. MouseUp 事件。

以下是鼠标按钮双击所引发的事件的顺序:

  1. MouseDown 事件。
  2. Click 事件。
  3. DoubleClick 事件。(此顺序可能会变化,取决于所讨论的控件是否将其 StandardDoubleClickControlStyles 位设置为 true。有关如何设置 ControlStyles 位的详细信息,请参见 Control.SetStyle 方法。)
  4. MouseUp 事件。

个别控件

以下控件符合标准的 Click 事件行为:

  • Button 控件
    • 单击左键:Click
    • 单击右键:不引发任何 Click 事件
    • 双击左键:ClickClick
    • 双击右键:不引发任何 Click 事件
  • CheckBox 控件
    • 单击左键:Click
    • 单击右键:不引发任何 Click 事件
    • 双击左键:ClickClick
    • 双击右键:不引发任何 Click 事件
  • RadioButton 控件
    • 单击左键:Click
    • 单击右键:不引发任何 Click 事件
    • 双击左键:ClickClick
    • 双击右键:不引发任何 Click 事件
  • TextBox 控件
    • 单击左键:Click
    • 单击右键:不引发任何 Click 事件
    • 双击左键:ClickDoubleClick
    • 双击右键:不引发任何 Click 事件
  • ListBox 控件
    注意   无论用户是否单击某项,下面详述的事件行为都会发生(即在 ListBox 控件中的任何位置单击或双击鼠标都引发这些事件)。
    • 单击左键:Click
    • 单击右键:不引发任何 Click 事件
    • 双击左键:ClickDoubleClick
    • 双击右键:不引发任何 Click 事件
  • CheckedListBox 控件
    注意   无论用户是否单击某项,下面详述的事件行为都会发生(即在 ListBox 控件中的任何位置单击或双击鼠标都引发这些事件)。
    • 单击左键:Click
    • 单击右键:不引发任何 Click 事件
    • 双击左键:ClickDoubleClick
    • 双击右键:不引发任何 Click 事件
  • ComboBox 控件
    注意   无论用户是否单击编辑字段、按钮或列表项,下面详述的事件行为都会发生。
    • 单击左键:Click
    • 单击右键:不引发任何 Click 事件
    • 双击左键:ClickClick
    • 双击右键:不引发任何 Click 事件
  • RichTextBox 控件
    • 单击左键:不引发任何 Click 事件
    • 单击右键:不引发任何 Click 事件
    • 双击左键:不引发任何 Click 事件
    • 双击右键:不引发任何 Click 事件
  • ListView 控件
    注意   下面详述的事件行为仅在用户单击 ListView 控件中的项时发生。单击控件上的任何其他位置都不会引发任何事件。除下面所描述的之外,还有 BeforeLabelEditAfterLabelEdit 事件,那些想对 ListView 控件使用验证的开发人员可能会对它们感兴趣。
    • 单击左键:Click
    • 单击右键:Click
    • 双击左键:ClickDoubleClick
    • 双击右键:ClickDoubleClick
  • TreeView 控件
    注意   下面详述的事件行为仅在用户单击项本身或单击 TreeView 控件中的项右侧时发生。单击控件上的任何其他位置都不会引发任何事件。除下面所描述的之外,还有 BeforeCheckBeforeSelectBeforeLabelEditAfterSelectAfterCheckAfterLabelEdit 事件,那些想对 TreeView 控件使用验证的开发人员可能会对它们感兴趣。
    • 单击左键:Click
    • 单击右键:Click
    • 双击左键:ClickDoubleClick
    • 双击右键:ClickDoubleClick

有关系统在引发这些事件时所发送的数据的详细信息,请参见 EventArgs 类。有关如何监视用户键盘输入的组合键(如 SHIFT、ALT 和 CTRL 键)的详细信息,请参见确定所按下的组合键

控件绘制行为

切换控件(如从 ButtonBase 类派生的控件)有特别的绘制行为。其打印行为如下:

  1. 用户按鼠标按钮。
  2. 该控件以按下状态进行绘制。
  3. 引发 MouseDown 事件。
  4. 用户释放鼠标按钮。
  5. 该控件以凸起状态进行绘制。
  6. 引发 Click 事件。
  7. 引发 MouseUp 事件。
    注意   如果用户在鼠标处于按下状态时将指针移出切换控件,则该切换控件将以凸起状态绘制,例如在 Button 控件处于按下状态时将鼠标从此控件上移开就属于这种情况。
请参见

Windows 窗体中的事件处理 | Windows 窗体中的鼠标事件和键盘事件 | Windows 窗体演练 | Windows 窗体和 Web 窗体推荐

id="Ad_21_7" marginwidth="0" marginheight="0" src="/Ad/Ad_21_7.htm" frameborder="0" width="0" scrolling="no" height="0">
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值