正在取消上一个调用方法中的事件调用序列
本文关键字:调用 事件 方法 取消 上一个 | 更新日期: 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);
}
}