首先执行/提出的委托和事件?

时间:2012-04-26 08:53:36

标签: c# asp.net .net events delegates

我不知道我应该在这里问这个问题,但无论如何我都在问......

假设我有一个asp按钮控件,我正在使用Delegate和Click事件来触发该按钮?

On Init:

  btn1.Click += delegate{ Save(); };

点击活动:

   protected void btn1_Click(object sender, EventArgs e)
   {
     Save1();
   }

我想知道哪个会先执行/提出?

3 个答案:

答案 0 :(得分:2)

btn1_click在设计时自动附加了InitializeComponent()函数中的click事件。 InitializeComponent(0函数是从表单的构造函数调用的。它是winforms的默认代码段。

在调用InitializeComponent()之前,不能调用以下语句,否则会出现错误“对象引用未设置为对象的实例”。到目前为止,控件还没有初始化。

btn1.Click += delegate{ Save(); };

因此执行顺序首先是btn1_Click事件,然后是委托附加的保存功能。

答案 1 :(得分:1)

我认为这与他们被分配的顺序有关。通常,在您使用代码隐藏或正在使用的ASPX文件中绑定它之前,不会触发一个名为btn1_Click的方法。

我猜你正在将btn1绑定到ASPX中的btn1_Click方法,这可能会先触发,但为什么不测试呢?在两条线上放置断点并查看哪一条首先被击中?

答案 2 :(得分:0)

事件未被“执行”,事件被引发,因此执行将是您的事件处理程序,即客户端明确点击的btn1_Click