使用反射令2个事件在不知道方法名的情况下使用同一个处理方法
来源:互联网 发布:中国自然资源数据库 编辑:程序博客网 时间:2024/05/01 01:42
今天在社区碰到了一个比较有意思的问题,将button1的Click事件与button2的Click事件在不知道方法名的情况下如何使用同一个处理方法,我之前已经解答了一个类似的问题,是要用到委托列表类实现的,上代码:
- private void Form1_Load(object sender, EventArgs e)
- {
- Button btn1 = new Button();
- btn1.Text = "button1";
- btn1.Click += new EventHandler(delegate(object s, EventArgs e2) { MessageBox.Show(s.ToString()); });
- btn1.Name = "btn1";
- btn1.Location = new Point(10, 10);
- this.Controls.Add(btn1);
- Button btn2 = new Button();
- btn2.Text = "button2";
- btn2.Name = "btn2";
- btn2.Location = new Point(10, 30);
- Type t = btn1.GetType();
- PropertyInfo pi = t.GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);//获取button1的事件属性
- EventHandlerList ehl = (EventHandlerList)pi.GetValue(btn1, null);//获取button1的委托列表
- FieldInfo fieldInfo = (typeof(Control)).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
- Delegate d = ehl[fieldInfo.GetValue(null)];
- btn2.Click += (EventHandler)d;
- this.Controls.Add(btn2);
- }
- 使用反射令2个事件在不知道方法名的情况下使用同一个处理方法
- 在同一个页面使用多个不同的jQuery版本而不冲突的方法
- 多个Button使用同一个事件处理方法时判断是哪个Button发生了事件
- 两个数在不使用中间变量的情况下,交换数值的方法汇总.
- 让人泪奔的方法:两个变量在不使用其他变量的情况下进行数据交换
- MySQL在右表数据不唯一的情况下使用left join的方法
- 在不知道第一响应者的情况下取消键盘方法
- 在不知道json格式的情况下如何使用cjson进行解析
- 在不知道json格式的情况下如何使用cjson进行解析
- 在分组情况下,同一个字段不相同的SQL
- 在不使用JFrame的情况下,获取鼠标桌面位置的最(zui)小(er)方法
- 不知道类名的情况下启动apk
- C/C++:在不使用第三个变量的情况下实现两个变量的交换
- 在不使用第三个变量的情况下,调换两个变量的值
- 不知道Activity名,只知道包名的情况下起应用
- visual studio2008在同一个解决方案下,多个工程共享一个临界段的实现方法(预编译指令ifdef和宏定义配合使用)
- java反射:使用asm 获取方法的参数名
- java反射:使用asm获取方法的参数名
- 用Flash与C语言制作工程实时数据动态曲线图
- asp.net(c#)实现文件上传功能
- 汇编的HELLO WORLD!
- 通过反射填充泛型集合List的静态方法
- 在线编辑LaTeX
- 使用反射令2个事件在不知道方法名的情况下使用同一个处理方法
- 下载一个文件,先是显示一个版权对话框,然后确定后的那个下载功能
- 随机数生成
- 来自weblogic10.0文档之《Configuring WebLogic Server Environments》
- 交叉编译构建带有SSL模块的Apache服务器
- JAVA语言基础
- 英研发新技术:仅用手势即可切换电视频道
- JBPM流程通过Aciton动态创建TaskInstance来实现“会签”
- 史玉柱:给员工高工资的时候公司利润率最高