声明事件:
public delegate void TestEventDelegate(object sender, System.EventArgs e);public class EventSource
{
    public event TestEventDelegate TestEvent;
    private void RaiseTestEvent() { /* ... */ }
}
触发事件:
private void RaiseTestEvent()
{
    TestEventDelegate temp = TestEvent;    if (temp != null)
    {
        temp(this, new System.EventArgs());
    }
}
以上是摘自MSDN中的一段代码,就是想请教一下各位 “temp(this, new System.EventArgs());”中的两个参数都具体代表的啥?尤其msdn中解释说“.NET Framework 中事件的签名中,通常第一个参数为引用事件源的对象,第二个参数为一个传送与事件相关的数据的类。”就是对于他说的那两个参数的含义不明白,具体是什么啊?谢谢各位了。
还有以下代码:
public class EventReceiver
{
    public void ReceiveTestEvent(object sender, System.EventArgs e)
    {
        System.Console.Write("Event received from ");
        System.Console.WriteLine(sender.ToString());
    }
}
都属于同一个问题,sender一般是指的什么对象?谢谢各位了。

解决方案 »

  1.   

    比如 一个Button Click 事件是Fuck
    Fuck(object sender,EventArgs e)
    {
    Button btn=sender as Button;
    其实就是 那个按钮按了我
    }
      

  2.   

    一楼说的有道理。
    就sender就是自身。
      

  3.   

    OnXxxxxEvent(object sender, EventArgs e)是一种常用的模式。
    新闻要素一般有(Who,Where,When,What),相同的,EventHandler用object sender来传达是谁(who)触发了事件,用EventArg来传达该事件是什么回事。因此可以说sender一般指触发事件的主体。注:并不是100%事件都要遵循这种模式,也有人会传入sender=null或e=EventArgs.Empty,要具体看文档。