CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

本人刚转向C#,对这一句“bnCtoF.Click += new EventHandler(this.bnCtoF_Click);”不理解,请高手讲讲。

楼主ymk(yanghao)2004-12-03 18:34:44 在 .NET技术 / C# 提问

“+=”的作用和意义是什么?是累加吗?  
  “bnCtoF.Click”的“Click”表示事件吗?事件能累加吗?  
  问题点数:20、回复次数:12Top

1 楼foyuan(暴走零零漆)回复于 2004-12-03 18:53:10 得分 0

事件只能这样赋值  
  确切的说应该是一种代理  
  事件是建立在代理上面的,一般是EventHandler代理,所以给事件赋值的时候就必须赋上一个EventHandler类型  
  因此用new   EventHandler()表达式  
   
  因为事件是一种代理,代理是通过委托一个函数执行的,委托的时候必须用+=,所以...Top

2 楼51106354(大头)回复于 2004-12-03 18:54:04 得分 0

+=   为特殊操作符,在定义事件时使用此方法.  
  详细你可以看看委托或事件定义  
  bnCtoF.Click   表示为此控件的Click事件,当然前提是此控件要支持Click事件  
  事件不能累加,但事件可以调用事件Top

3 楼kangxidadi(康熙大帝)回复于 2004-12-03 19:00:39 得分 0

楼上讲的不知所云。  
  click是事件,+=用于订阅事件处理方法,-=用于取消订阅,+=右边必须是一个与具有相同类型的代理,未必要new出来的。  
  你可以把+=当作累加,标题中的代码执行两次之后,以后发生click事件会执行两次bnCtoF_Click方法。这是后要取消的话必须执行与+=相等次数的-=.Top

4 楼ysjfirst()回复于 2004-12-03 19:00:48 得分 0

+=是对应于事件的专有运算符,与之相对应的还有-=;  
  +=就是使把相相应的方法对应到事件触发对象上  
  -=取消这种对应Top

5 楼flame_qin(flame)回复于 2004-12-03 19:18:19 得分 0

建议认真学习C#语法中的“委托和事件”  
  “委托”在不同的书中可能有不同的叫法,如:“委派”、“指代”等等。Top

6 楼yanransoft()回复于 2004-12-03 20:15:45 得分 0

给bnCtoF对象的click事件关联一个事件处理方法bnCtoF_Click  
  bnCtoF.Click   +=   new   EventHandler(this.bnCtoF_Click);”Top

7 楼ymk(yanghao)回复于 2004-12-03 20:28:10 得分 0

yanransoft()   的总结有些味道,我闻到了一点,请诸位高手继续教我...Top

8 楼zhoutler(一代程序巨浆--用浆糊粘贴别人代码巨厉害)回复于 2004-12-03 21:42:54 得分 0

看看C#的语法规范:  
      事件申明可以包含访问器的声明.如果省略...  
      事件可用于+=和-=运算符的左操作符....而该事件的访问修饰符控制该运算的上下文。  
  在型如:x+=y和x-=y的运算中,如果x是一个事件,而且该引用发生在声明了x事件的类型之外,则这种...此规则能够禁止外部代码以....  
  太多了。难得打,看看Anders   Hejlsberg自己出的C#语法规范。Top

9 楼zhoutler(一代程序巨浆--用浆糊粘贴别人代码巨厉害)回复于 2004-12-03 21:46:15 得分 0

居然有人说-=和+=是专门用于事件的操作符?Top

10 楼alias88()回复于 2004-12-03 22:02:00 得分 0

居然有人说-=和+=是专门用于事件的操作符?  
  居然有人说事件不能累加  
   
  事件也是有get,set方法的,+=   -=只是操作符重载,  
  设置事件调用就是将委托加到事件列表中,引发事件时历遍列表一一调用委托而已  
  不一定是new的,比如你可以将所有菜单单击事件定向到一个委托  
  +=   -=   要用好,不然可能会一个委托被调用多次而你不想Top

11 楼alias88()回复于 2004-12-03 22:29:53 得分 0

举一套例子:  
   
  //定义事件句柄  
  public   delegate   void   RowUpdateHandler(object   Sender,RowUpdateEventArgs     e);  
  --------------------------  
   
  定义事件  
  [  
  Category("数据更新"),  
  Description("在更新表的每一个更改行完毕时发生")  
  ]  
  public   event   RowUpdatingHandler   RowUpdated;  
   
  --------------------------  
   
  //定义事件要使用的参数类  
  public   class   RowUpdateEventArgs:System.EventArgs  
  {  
      public     DataRow   UpdateDataRow;  
      public     SqlCommand   Command;  
      public     System.Data.SqlClient.SqlTransaction   Transaction;  
      public     bool   CancelUpDate;  
   
      public     RowUpdateEventArgs(DataRow     pUpdateDataRow,SqlCommand   pCommand,   SqlTransaction       pTransaction   ,   ref   bool   pCancelUpDate   ):base()  
      {  
            UpdateDataRow=pUpdateDataRow;  
            Command=pCommand;  
            Transaction=pTransaction;  
            CancelUpDate=pCancelUpDate;  
      }  
  }  
   
  --------------------------  
   
   
   
  --------------------------  
   
  //引发事件  
  protected     void   OnRowUpdating(DataRow   pDR,SqlCommand   pCMD,   SqlTransaction   pTransaction)  
  {  
        bool   Cancle=false;  
        if(RowUpdating   !=null)    
              RowUpdating(this,new   RowUpdateEventArgs(pDR,pCMD,pTransaction,ref   Cancle));  
        if   (Cancle)  
              pTransaction.Rollback();  
        else  
              pTransaction.Commit();  
  }  
  --------------------------以上都在一个类里面定义,假设是myForm  
   
  ///事件处理(可能在另一个类)  
   
  public   class   xxxxx   :   myForm  
  {  
      xxxxx()  
      {  
          //预订事件  
          base.RowUpdated+=   new   RowUpdateHandler(rowupdate);  
      }  
   
      private   rowupdate(object   sender,RowUpdateEventArgs     e)  
      {  
          //事件处理  
          ....  
      }  
  }  
   
   
   
  Top

12 楼liangshutao()回复于 2004-12-24 15:49:00 得分 20

yanransoft()   的总结Top

相关问题

  • 谁能跟我讲讲C++
  • 谁来讲讲C++的参考类型?
  • 请讲讲c#的编译器把
  • C#与C++的区别能详细讲讲吗??
  • C++高手能否讲讲allocator? C++primer例子经常用到
  • 谁给我讲讲C#中的引用的概念?
  • 问题一:请大家给讲讲c++中的 vector
  • 谁能详细讲讲c++中引用的使用方法?
  • c#到底能做什么?能给我讲讲吗?
  • 哪位能为我讲讲C++嵌套类的意思和用途?

关键词

  • c#
  • 委托
  • 语法
  • 执行
  • bnctof
  • 事件
  • 操作符
  • rowupdateeventargs
  • click
  • eventhandler

得分解答快速导航

  • 帖主:ymk
  • liangshutao

相关链接

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

广告也精彩

反馈

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