2009-07-15 11 views

Antwort

1

Ihre Frage ist unklar. Angenommen, Sie versuchen, das Ereignis der Basisklasse im geerbten Steuerelement zu behandeln, können Sie die geschützte virtuelle Methode On Ereignisname überschreiben. Stellen Sie in der Überschreibung sicher, dass die Basismethode aufgerufen wird oder dass das Ereignis nicht ausgelöst wird.

Diese Methode existiert (AFAIK) für jedes Ereignis in jeder Kontrolle in System.Windows.Forms. Wenn das Steuerelement, das Sie erben, diese virtuelle Methode nicht besitzt, können Sie den Vent im Konstruktor abonnieren.

Zum Beispiel:

class MyButton : Button { 
    //First way 
    protected override void OnClick(EventArgs e) { 
     base.OnClick(e); //Without this line, the event won't be fired 
     //... 
    } 


    //Second way 
    public MyButton() { 
     base.Click += Base_Click; 
    } 

    void Base_Click(object sender, EventArgs e) { 
     //... 
    } 
} 

EDIT:

Wenn Sie versuchen, die Basisklasse Ereignis zu erhöhen, können Sie diese auf Eventname Methoden aufrufen.

Wenn die Basisklasse nicht über eine verfügt, besteht die einzige Möglichkeit darin, ein neues Ereignis zu deklarieren und dem ursprünglichen Ereignis einen Handler aus der Basisklasse hinzuzufügen, die das neue Ereignis auslöst. Beachten Sie, dass, wenn Sie einen anderen Code haben, der die Basisklasse Ereignis verwendet, und die EVnet ist nicht virtual und keinen Raiser Methode, Sie kein Glück, wenn Sie die Basis cla dekompilieren und herausfinden, wo die Veranstaltung ist erhöht.

1

Ereignisse in WinForms haben normalerweise eine entsprechende "On *" - Methode. Rufen Sie einfach diese Methode auf und es wird das Ereignis ausgelöst. Wenn Sie beispielsweise "CellClick" aufrufen möchten, rufen Sie "base.OnCellClick (new DataGridViewCellEventArgs (row, column))" auf.

+0

+1, da dies war die Antwort, die ich suchte. –

Verwandte Themen