0

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

假设我有一个 asp 按钮控件,并且我同时使用 Delegate 和 Click 事件来处理将首先触发的按钮?

初始化时:

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

点击事件:

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

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

4

3 回答 3

2

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

在调用InitializeComponent()之前不能调用下面的语句,否则会报错“Object reference not set to an instance of an object”。直到此时,控件还没有初始化。

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

所以执行顺序将首先是 btn1_Click 事件,然后是委托附加的保存函数。

于 2012-04-27T09:39:16.883 回答
1

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

我猜你正在将 btn1 绑定到 ASPX 中的 btn1_Click 方法,这可能会首先触发,但为什么不直接测试它呢?在两行都设置断点,看看哪个是第一个被击中的?

于 2012-04-26T08:59:29.723 回答
0

事件未“执行”,事件已引发,因此执行将由您的事件处理程序执行,该事件处理程序btn1_Click由客户端特别点击。

于 2012-04-26T08:57:59.710 回答