VB.NET之旅-事件驱动程序设计

事件驱动程序设计:使用者所操作的每一个动作都视为「事件」,事件会被操作系统所拦截,并传递给应用程序的进程,

  1. 需要在事件中执行的程序代码,会放在事件处理函式(event handler)中
    1. 事件处理函式通常会依附在控件上

  1. 也可以独立存在

  1. 识别事件处理函式
    1. 借 Handles 关键词来识别事件处理函式
    1. 与函式的名称没有相关 …

  1. 多对一的事件处理
    1. 多个控件可以使用同一个事件处理函式
      1. 类似 VB6 中的控件数组
      1. 范例: 当 TextBox 控件的文字改变时,设定为「changed」

  1. 使用多对一的事件处理的时机
    1. 当不同的控件均呼叫相同的程序代码
    2. 减少程序代码的撰写

  1. 动态的事件处理在执行时期可以动态为事件驱动动态添加或移除事件
    1. 范例: 在按钮的事件中,呼叫 AddHandler 或是 RemoveHandler
      1. 当按下按钮时,就会出现两个MessageBox,第一个显示TestA”,第二个显示TestB
      1. address为事件驱动指明添加的哪个事件

  1. 一对多的事件处理
    1. 单一控件也可以呼叫多个事件处理函式
    1. 以上述动态移除和添加事件为例同一个事件驱动button_click有两个事件分别是TestATestB
    1. 使用时机
      1. 当程序的架构比较松散时
      2. 范例
        1. 在数据更新之后,必须通知所有开启中的窗体
        2. 每个窗体会在 Load 事件中动态加入事件处理
        3. 每个窗体会在 Closed 事件中动态移除事件处理
  1. 与事件相关的信息
    1. 事件处理函式的特征项具有两个参数:
      1. 引发事件的对象
      1. 该事件中特有的参数(e.g. 鼠标的位置)
    1. 在多对一的事件处理中,方便取得事件信息
      1. 范例:我们希望取得引发事件的是哪个控件
  1. 你问我答游戏
    1. 问:事件和事件驱动含义分别是什么?
    1. 答:it's your turn

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...