首先执行/引发的委托和事件

本文关键字:事件 执行 | 更新日期: 2023-09-27 18:32:14

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

假设我有一个 asp 按钮控件,并且我同时对该按钮使用委托和单击事件,该按钮将首先触发?

在初始化时:

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

单击事件时:

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

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

首先执行/引发的委托和事件

btn1_click在

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

在调用 InitializeComponent() 之前不能调用以下语句,否则会给出错误"对象引用未设置为对象的实例"。在此之前,控件尚未初始化。

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

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

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

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

事件不是"执行"的,而是引发事件,因此执行将是你的事件处理程序,该处理程序在客户端特别点击时btn1_Click