March 18, 2008
Access中的事件和委托
实际上对.Net中的“委托(delegate)”的概念并不很懂。如果仅理解成自定义事件的话,在Access中也可以部分实现。
窗体2中的自定义事件FireFromF2被窗体1捕获处理,参数被传递。用法很简单,注意WithEvents关键字的使用。
上面的例子要求先f2开启状态下再打开f1才能成功注册事件(原因见最后的总结)。如果是子窗体的事件,就简单一些,应用更常见。
总结
- WithEvents设置了事件监听的钩子,这个钩子针对的是Object,是实例,而不是Class或类型。
- 所以可以监听Application这样的全局物件,也可以监听某个具体的Form。但是不能对所有的Form(Access.Form类型)起作用。
- VBA中不支持自动的up-casting;WithEvents也不支持对象数组。所以后期绑定的方法也基本行不通。




Filed by
charlie
at 11:16 pm under 


I would regard delegate as the pointer to the function. Furthermore, keyword event defines a special delegate that:
e.g.
public class Test
{
public event testEvent;
}
Though testEvent is public, it can only be invoked like a private member.
Correct me if I am wrong.