Wenn actions
ein Panel ist, kann ich das Click
-Ereignis des Elternteils erhöhen?
Ich habe diesen Code im Moment, aber das Click
-Ereignis ist keine Methode, daher ist dieser Code ungültig.
Weiß jemand, wie ich das erreichen kann?
Es ist nicht möglich, ein C # event
direkt von einem anderen class
zu erzeugen (auch wenn es public
ist). Sie könnten eine Methode (mit einem ausreichenden Zugriffsmodifikator) bereitstellen, die die event
für Sie erhöht und diese Methode in der anderen class
aufruft.
Das ist übrigens mit Reflektion möglich, aber ich halte das für einen schmutzigen Hack.
Die meisten Typen in der CLR, die Ereignisse auslöst, verfügen über eine geschützte On [EventName] -Methode, die dafür sorgt, dass das Ereignis ausgelöst wird. Sie können diese geschützte Methode "von außen" mit Reflection aufrufen:
%Vor%Ich habe dies mithilfe von Reflection- und Extension-Methoden implementiert, so dass ich (in diesem Fall) einfach ein LinkLabel click -Ereignis aufrufen kann, indem ich einfach Folgendes aufrufe:
%Vor%Die Methode click () ist eine C # -Erweiterungsmethode:
%Vor%verwendet eine andere Erweiterungsmethode für:
Der einzige Grund, warum ich mir vorstellen kann, warum Sie das Click-Ereignis auslösen möchten, ist, wenn Sie Benutzereingaben simulieren. Arbeiten Sie an einem automatisierten Testtreiber oder etwas ähnlichem? Wenn dies der Fall ist, kann es bessere Lösungen geben, als den Code mit Nur-Test-Hilfsmethoden zu belasten. Das kommt zuerst in Google, ich habe keine Ahnung, ob es gut ist.
Wenn Sie dies als eine Art Flusskontrolle in Ihrer Anwendung selbst versuchen, würde ich einen Schritt zurückgehen, um zu sehen, ob das überhaupt richtig ist - es riecht irgendwie "schlecht".