CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

关于C#中的事件绑定

楼主wildwolfsun(菜鸟初飞)2005-07-28 08:32:08 在 .NET技术 / C# 提问

在WinForm中,能不能判断一个Button是否绑定了处理程序呢?    
  如果可以,该怎么做呢? 问题点数:50、回复次数:16Top

1 楼ruihuahan(飞不起来的笨鸟)回复于 2005-07-28 08:45:36 得分 0

如果button1.Click   ==   null,则未绑定事件处理程序。Top

2 楼JasonHeung(拥有一切不过就这样笑着哭)回复于 2005-07-28 08:53:43 得分 0

同意楼上。Top

3 楼cdo(Everything has a favourable turn)回复于 2005-07-28 08:54:56 得分 0

if   (button1.Click   ==   null)  
  {  
  }Top

4 楼qpl007(蓝色闪电)回复于 2005-07-28 09:07:51 得分 0

就是:  
   
  button1.Click   是否==   nullTop

5 楼wildwolfsun(菜鸟初飞)回复于 2005-07-30 15:36:31 得分 0

那个只能在声明事件成员的类的内部可以  
  出了那个类出了那个就不可以了  
   
  而我需要的是出了类的Top

6 楼wildwolfsun(菜鸟初飞)回复于 2005-07-30 15:46:12 得分 0

button1是封装了的  
  大家都有一点想当然了吧Top

7 楼iceflylee(www.hxdb.net)回复于 2005-07-30 20:27:24 得分 0

判定绑定事件和封不封装没啥关系吧!!!  
  if   (button1.Click   ==   null)  
  {  
  }  
  对啊Top

8 楼gudengyeren(孤灯夜人)回复于 2005-07-30 21:51:18 得分 0

支持楼上们的,Top

9 楼wxwx110(无敌大馒头)回复于 2005-07-30 23:38:40 得分 0

if   (   button1.Click!=null)  
  {}Top

10 楼fan2c(只想多学习)回复于 2005-07-31 00:03:46 得分 40

外部应该不可以判断,不然还用private这个限制做什么,就是要保护代码安全性Top

11 楼fan2c(只想多学习)回复于 2005-07-31 00:05:02 得分 0

不过用歪办法也许就可能了,不过我技术浅薄Top

12 楼zhongwanli(㊣【为了老婆,二次重构____然后升★★】㊣)回复于 2005-07-31 00:10:05 得分 0

一楼Top

13 楼elixir2002(倚林舍)回复于 2005-07-31 09:48:57 得分 0

弓虽!!Top

14 楼yk1028()回复于 2005-07-31 14:01:49 得分 10

如果按钮click绑定的事件方法是系统默认产生的,可以试试如下,  
  如在Form1中判断Form2(或Form1本身)中的所有按钮是有事件,则  
  Form2   f=new   Form2();  
  fe(f,f);      
  //Form1中调用时.如是判断Form1中按钮,直接fe(this,this),调试过的,代码就不格式化了  
   
  private   void   fe(Form   frm,Control   pctl)  
  {  
  foreach(Control   ctl   in   pctl.Controls)  
  {  
  if(ctl   is   Button)  
  {  
  if(HaveBindClickEvent(frm,(Button)ctl))  
  this.listBox1.Items.Add(ctl.Name);  
  }  
  if(ctl.Controls.Count>0)  
  fe(frm,ctl);  
  }  
  }  
   
  private   bool   HaveBindClickEvent(Control   frm,Button   btn)  
  {  
  System.Reflection.Assembly   a=System.Reflection.Assembly.GetAssembly(frm.GetType());  
  System.Type   typ=a.GetType(frm.GetType().FullName,true);  
  System.Reflection.MethodInfo[]   methods=typ.GetMethods(BindingFlags.Instance|BindingFlags.NonPublic);  
  foreach(MethodInfo   mi   in   methods)  
  {  
  if(mi.Name.StartsWith(btn.Name   +   "_Click"))   //按钮事件不要乱改  
  return   true;  
  }  
  return   false;  
  }  
   
   
  Top

15 楼bhw1985(劢垦)回复于 2005-07-31 15:18:32 得分 0

有见解,支持Top

16 楼qpl007(蓝色闪电)回复于 2005-08-01 10:23:50 得分 0

public   bool   CheckButtonClientEvent()  
  {  
            return   this.button1.Click   !=   null;  
  }  
   
  外部调用:  
  xx.CheckButtonClientEvent()Top

相关问题

  • C++Bulider事件定义
  • C#事件问题
  • 事件的后期绑定
  • datalist绑定控件事件!
  • Asp.Net/c# 绑定问题?
  • c#数据绑定问题
  • 用c#作控件事件
  • C#事件调试问题
  • c#中事件的问题
  • 在c/S结构中,如何定义中间层的事件(内详)?

关键词

  • null
  • 绑定
  • 事件
  • frm
  • ctl
  • 按钮
  • 判断
  • button
  • click
  • fe

得分解答快速导航

  • 帖主:wildwolfsun
  • fan2c
  • yk1028

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo