利用匿名委托和动态事件注册机制实现应用程序状态监视
2008-07-23 14:02
567 查看
//目的:利用匿名委托和动态事件注册机制实现应用程序状态监视
//限制:控制事件均通过CommandHelper注册
// 事件注册帮助类
public class CommandHelper
{
public static void PerformHandler(object sender, EventArgs e)
{
//在此方法中实现对于用户是否操作的状态捕捉;
}
/// <summary>
/// 注册事件
/// </summary>
/// <param name="command">命令对象</param>
/// <param name="handler">响应委托</param>
public static void RegisteClickEvent(object command, System.EventHandler handler)
{
System.Reflection.EventInfo eventInfo = command.GetType().GetEvent("Click", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);
if (eventInfo != null)
{
eventInfo.AddEventHandler(command, handler);
eventInfo.AddEventHandler(command, new System.EventHandler(PerformHandler));
}
}
}
//客户代码
//注册按键事件
.....
CommandHelper.RegisteClickEvent(this.tsbAddNew,delegate(object o,EventArgs p)
{
//点击时调用子窗体
QxFunctionManager_Edit editor = new QxFunctionManager_Edit();
editor.ShowDialog();
}
);
......
//限制:控制事件均通过CommandHelper注册
// 事件注册帮助类
public class CommandHelper
{
public static void PerformHandler(object sender, EventArgs e)
{
//在此方法中实现对于用户是否操作的状态捕捉;
}
/// <summary>
/// 注册事件
/// </summary>
/// <param name="command">命令对象</param>
/// <param name="handler">响应委托</param>
public static void RegisteClickEvent(object command, System.EventHandler handler)
{
System.Reflection.EventInfo eventInfo = command.GetType().GetEvent("Click", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);
if (eventInfo != null)
{
eventInfo.AddEventHandler(command, handler);
eventInfo.AddEventHandler(command, new System.EventHandler(PerformHandler));
}
}
}
//客户代码
//注册按键事件
.....
CommandHelper.RegisteClickEvent(this.tsbAddNew,delegate(object o,EventArgs p)
{
//点击时调用子窗体
QxFunctionManager_Edit editor = new QxFunctionManager_Edit();
editor.ShowDialog();
}
);
......
相关文章推荐
- 【原创源码】(01):利用事件-委托,实现主-子窗体动态显示,不同菜单栏,不同工具栏。(类似SQL Server 2000 企业管理器)
- 利用事件-委托,实现主-子窗体动态显示,不同菜单栏,不同工具栏。(类似SQL Server 2000 企业管理器)
- 利用C#线程机制实现应用程序的单实例运行
- js中的事件委托机制(解决动态生成的dom元素无法绑定事件的问题)
- C#利用lambda实现委托事件的挂接
- 黑马程序员_(15)类加载器的委托机制及动态代理的三种实现
- [WCF-Discovery] 实例演示:如何利用服务发现机制实现服务的“动态”调用?
- 实现C++中的事件委托机制
- Delphi实现Android 广播事件监听(动态注册广播)
- Unity&网络:利用UDP实现动态监测局域网在线用户及掉线事件。
- 利用事件委托实现用户控件中的行为触发所在页面的处理函数
- WPF利用委托与事件实现VM对View中控件的调用
- C++实现事件委托机制
- addEventListener(type, fn , true/false)绑定事件第三个参数作用以及利用事件的冒泡,实现事件委托
- 利用自定义属性实现js点击事件 委托
- jquery开发:事件冒泡机制与委托机制,jQuery动态绑定
- Android 第十九课 大喇叭--广播机制----动态注册监听网络变化与静态注册实现开机启动
- 实现桌面应用图标的动态隐藏和显示,触发事件为SIM卡的状态
- 利用Objective-C的反射机制和运行时特性实现类静态方法的动态访问(二)
- 利用RSVIEW32的事件机制实现软冗余自动切换