是否可以取消已触发的事件?

Is it possible to cancel a triggered event?

本文关键字:事件 取消 是否      更新时间:2023-09-26

我正在开发asp.net web应用程序。在这种情况下,对于一个按钮点击Page_Load事件是触发button_click之前的。所以我的问题是,在基于某些条件的Page_Load中是否有可能暂停button_click事件。(c#或Vb都可以。Net解决方案是可以接受的)。目前,我通过使用一些标志值来实现这一点,如下所示:

根据某些条件在页面加载中设置标志值

bool buttonFlag = false;
protected void Page_Load(object sender, EventArgs e)
 {
    if (condition) { buttonFlag = true; }
 }

检查标志值并调用方法,如果标志值为真(因此操作只在标志值为真时执行),因此我们可以根据页面加载时设置的条件跳过操作。

protected void Button1_Click(object sender, EventArgs e)
    {
        if (buttonFlag) 
        {//call mymethod
            myMethod();
        }
    }

是否可以在不使用标志的情况下挂起事件?

我想你已经将Button1_Click函数与visual studio中的标准页面设计器链接到单击事件。如果您希望事件处理程序在某些条件下处于活动状态,则必须更动态地绑定它。

首先需要删除页面设计器中单击事件框中的函数名。

然后,你可以把它附加到你的页面加载:

protected void Page_Load(object sender, EventArgs e)
{
    if (condition) { 
        Button1.Click += Button1_Click;
    }
}