【问题标题】:Is it possible to cancel a triggered event?是否可以取消触发的事件?
【发布时间】:2016-01-14 23:50:55
【问题描述】:

我正在开发 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();
        }
    }

是否可以在不使用标志的情况下暂停活动?

【问题讨论】:

    标签: javascript c# jquery asp.net vb.net


    【解决方案1】:

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

    首先需要在页面设计器中去掉点击事件框中的函数名。

    然后,您可以在页面加载中附加它:

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

    【讨论】:

    • 但是,当页面加载由于按钮点击的回发而触发时,您可以在 Page_load 上将其分离吗?
    • 可能,试试:Button1.Click -= Button1_Click;
    猜你喜欢
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多