日期:2014-05-18  浏览次数:20826 次

关于事件委托问题
this.DateTime_txt.KeyPress += new System.Windows.Forms.KeyPressEventHandler()
this.button1.Click += new System.EventHandler()
为什么事件委托使用不同的方法,都用System.EventHandler()不行吗?

------解决方案--------------------
如果KeyPress事件改成EventHandler,那么,事件仅仅告诉你有某个键按过了,至于是那个键,你就自己想办法去查吧
------解决方案--------------------
。。。简单的说,就是事件给你的东西不一样,
KeyPress除了告诉Key被Press了,还要额外告诉你哪一个Key被Press了,怎么告诉你哪?它传给你一个KeyPressEventArgs的实例(也就是默认的变量e)
和Click不同,Click只告诉了你,它被Click了,至于Click在哪里,坐标是多少,不需要告诉你,因为你不需要关心,所以仅仅传了个EventArgs。
因为参数e的类型不同,所以Handler也是不同类型
------解决方案--------------------
也可以的,但是
this.DateTime_txt.KeyPress += new System.Windows.Forms.KeyPressEventHandler()
这样可以更加精确的定义问题,你看看this.DateTime_txt_KeyPress这个方法的定义吧,肯定是
public void this.DateTime_txt_KeyPress(object sender, KeyPressEventArgs e)

e.KeyChar//这个东西就可以判断是什么键了