2012-04-26 42 views
0

我不知道我应该问这个或这个问题但不管怎样,我问..首先执行/提出的委托和事件?

假设我有一个asp按钮控件,我使用委托和点击事件的按钮,将首先触发?

在初始化:

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

On Click事件:

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

我想知道这将执行/首募?

回答

2

btn1_click在设计时自动附加了InitializeComponent()函数中的click事件。 InitializeComponent(0函数从窗体的构造函数中调用,它是Winforms的默认片段)

在调用InitializeComponent()之前,您不能调用以下语句,否则会出现错误“Object reference not set to an instance of an对象。”直到这时,控制不intialised。

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

所以执行的顺序是先btn1_Click事件,然后附以委托保存功能。

+0

好,是的,我已经通过保持检查点击事件将先提高然后删除保存功能。 谢谢你的回应。 – Rocky 2012-04-27 11:17:33

0

事件不是“执行”,事件是引发,所以执行将是你的事件处理程序,它是由客户端明确做出的btn1_Click

1

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

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