2016-07-22 2 views
1

Ich habe eine abgeleitete Klasse aus der Button-Steuerelementklasse erstellt. Wenn ich das Steuerelement verwende, muss ich verhindern, dass es in einer bestimmten Situation aufgerufen wird. Die Situation ist bereits in der abgeleiteten Klasse myClick definiert. Ich vermutete, dass es einen Weg gibt, e.Cancel = true zu setzen, aber ich kann nicht. Können Sie einen einfachen Vorschlag zur Lösung dieser Aufgabe geben?Abbrechen der Ereignisaufruffolge in der zuvor aufgerufenen Methode

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"); 
     } 
    } 
} 

Antwort

1

Die Situation ist bereits in der abgeleiteten Klasse definiert.

Die Click Ereignis auslöst durch Control.OnClick Verfahren. Um zu verhindern, Click Ereignis auslöst, können Sie OnClick außer Kraft setzen und rufen base.OnClick nur, wenn die Kriterien den Klick zu verhindern ist nicht wahr:

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

statt _CLICK event_ der Zeichnung, die overrided i _onClick_ Funktion. Es klappt! –

+0

Ja, so sollte man gehen :) –