我从Button控件类中创建了一个派生类。当我使用控件时,我需要在某些情况下防止调用。情境已经在派生类myClick函数中定义。我猜想有一种方法可以设置e.Cancel = 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");
}
}
}
答案 0 :(得分:1)
已在派生类中定义了这种情况。
Click
事件由Control.OnClick
方法引发。为防止引发Click
事件,您可以覆盖OnClick
并仅在防止点击的条件不符合时调用base.OnClick
:
public class SampleButton : Button
{
protected override void OnClick(EventArgs e)
{
if(!criteriaToPrevent)
base.OnClick(e);
}
}