正在取消上一个调用方法中的事件调用序列

本文关键字:调用 事件 方法 取消 上一个 | 更新日期: 2023-09-27 17:58:12

我从Button控件类中创建了一个派生类。当我使用控件时,我需要在某些情况下防止调用。这种情况已经在派生类myClick函数中定义。我猜有一种方法类似于设置e。取消=true,但我做不到。你能给我一个简单的建议来解决这项任务吗?

public class SButton : Button
{
    public SButton() : base()
    {
        Click += new System.EventHandler(myClick);
    }

    private void myClick(object sender, EventArgs e)
    {
        if( meHandsome )
        {
            // here I want to prevent no more event invocation!
        }
    }
}

public partial class UTeachAdvanced : DevExpress.XtraEditors.XtraUserControl
{
    private void UTeachAdvanced_Load(object sender, EventArgs e)
    {
        SButton btn = new SButton();
        Controls.Add(btn);
        btn.Click += new EventHandler(delegate(object sender, EventArgs args)
        {
            Console.Write("ugly");
        }
    }
}

正在取消上一个调用方法中的事件调用序列

该情况已在派生类中定义。

Click事件由Control.OnClick方法引发。为了防止引发Click事件,您可以覆盖OnClick,并仅在阻止单击的条件不为true时调用base.OnClick

public class SampleButton : Button
{
    protected override void OnClick(EventArgs e)
    {
        if(!criteriaToPrevent)
            base.OnClick(e);
    }
}