我不知道我是否应该在这里问这个问题但无论如何我在问..
假设我有一个 asp 按钮控件,并且我同时使用 Delegate 和 Click 事件来处理将首先触发的按钮?
初始化时:
btn1.Click += delegate{ Save(); };
点击事件:
protected void btn1_Click(object sender, EventArgs e)
{
Save1();
}
我想知道哪个会先执行/提出?
btn1_click 在设计时自动附加到 InitializeComponent() 函数中的单击事件。InitializeComponent(0 函数是从表单的构造函数调用的。它是winforms的默认片段。
在调用InitializeComponent()之前不能调用下面的语句,否则会报错“Object reference not set to an instance of an object”。直到此时,控件还没有初始化。
btn1.Click += delegate{ Save(); };
所以执行顺序将首先是 btn1_Click 事件,然后是委托附加的保存函数。
我认为这与分配它们的顺序有关。通常,一个名为 btn1_Click 的方法不会触发,除非您将它绑定到代码隐藏或您正在使用的 ASPX 文件中。
我猜你正在将 btn1 绑定到 ASPX 中的 btn1_Click 方法,这可能会首先触发,但为什么不直接测试它呢?在两行都设置断点,看看哪个是第一个被击中的?
事件未“执行”,事件已引发,因此执行将由您的事件处理程序执行,该事件处理程序btn1_Click
由客户端特别点击。