Ich muss einen Ereignishandler zu einem geerbten Steuerelement wie eine Datagridview hinzufügen, aber Visual Studio lässt mich nicht. Gibt es keine Möglichkeit für eine geerbte Kontrolle, einen Base-Event-Handler UND den geerbten zu feuern? in einer Sequenz spezifiziere ich?Wie Hinzufügen von Ereignishandler zu einem geerbten Winform-Steuerelement?
Antwort
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.
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.
- 1. Hinzufügen von Ereignishandler zu einem Iframe mit JQuery
- 2. Erweiterung ATL, VS2008: Ereignishandler zu WindowEvents hinzufügen
- 3. Wie Hinzufügen von Ereignishandler mit Argumenten zu einem Array von Elementen in Javascript?
- 4. Die beste Methode zum Hinzufügen von Anmerkungen zu geerbten Methoden
- 5. Wie öffentliche Methode von einem Ereignishandler
- 6. Wie Ereignishandler lokale Variable in VB.NET hinzufügen
- 7. jQuery: Hinzufügen von Ereignishandler soeben erstellte Element
- 8. Hinzufügen und Entfernen von anonymen Ereignishandler
- 9. Ereignishandler für ListView hinzufügen Items_added
- 10. Übergeben von Textfeldwerten in einem Ereignishandler
- 11. Wert von "das" in einem Maus-Ereignishandler
- 12. F # -Funktion als Ereignishandler in XAML hinzufügen
- 13. Ereignishandler zum Benutzersteuerelement vom benutzerdefinierten Objekt hinzufügen
- 14. Mischen geerbten Konstruktor von der Basisklasse mit einem benutzerdefinierten construcutor
- 15. Wie Ereignishandler programmatisch in WPF hinzufügen wie man in Winform
- 16. Wie Rechtsklick Ereignishandler für statischen Text in MFC-Dialog hinzufügen?
- 17. Das Hinzufügen neu erstellten Element Ereignishandler
- 18. Speichern von Daten in einem geerbten Django-Modell
- 19. Anzeigen aller Ereignishandler, die mit einem Button verknüpft sind?
- 20. Wie benutzerdefinierte Parameter Ereignishandler
- 21. JavaScript: Das Hinzufügen der geerbten Klasse zum Array funktioniert nicht
- 22. Dynamisches Hinzufügen von ToolStripMenuItems zu einem MenuStrip (C#/Winforms)
- 23. Abfangen von Ausnahmen von einem Ereignishandler aus einer anderen Klasse
- 24. Sichtbarkeit von privat geerbten typedefs zu verschachtelten Klassen
- 25. Hinzufügen von Text zu einem JPEG
- 26. zu einem Objekt hinzufügen
- 27. Hinzufügen von Beiträgen zu einem benutzerdefinierten Blog?
- 28. Hinzufügen von Mitgliedern zu einem bestehenden Objekt
- 29. Hinzufügen von Text zu einem grid.table Plot
- 30. Hinzufügen von DropDownLists zu einem Benutzersteuerelement C#
+1, da dies war die Antwort, die ich suchte. –