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

C#中有关事件参数object sender, System.EventArgs e没有使用的问题
一个事件,如:
private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show("a");
}
它的参数:object sender, System.EventArgs e 完全没有用上,而且好多地方都没有用.为什么老是要带着它呢?
我知道这两个参数的意思.
object sender 是传送引发事件对象的本身的引用
System.EventArgs e 是传送事件引发时传送相关信息

但一般都没有用到啊.

------解决方案--------------------
可能同一个事件处理方法被多个对象的事件使用,这样这个Sender就显得重要了,别外也可以通过Sender来获取对象的引用,比如调用它的方法等。

比如: 
Button btn = sender as Button;
if (btn!=null)
{
btn.Invalidate();
}

e就要看是什么事件了,对于Click来说,可能会没有什么太大的意义,不过对于像Form_Closing事件等,这个参数e就显示重要了,可以通过e.Cancel取消窗体的关闭。参数e就是对某个事件的所要传递的信息的扩展,如果没有什么信息可以扩展的,那么它就是为标准的样式而留的了。
------解决方案--------------------
简单的说
object sender 是触发事件的对象,
System.EventArgs e 会带有一些参数

你现在是一个事件指定一个方法处理,所以感觉不要,如果很多对象的不同事件指定同一个方法处理,
那么在方法里面就需要判断当前哪个对象触发了事件(object sender ),并且还可能需要知道
这个事件是否传递了有用的或者特殊的信息(System.EventArgs)