HI, Ich erweitere eine in C# geschriebene Windows-Anwendung, um dem Benutzer (im Kontext des fokussierten Steuerelements) Hilfe zu geben, wenn er die F1-Taste drückt.Globaler Ereignishandler für alle Steuerelemente für Benutzerhilfe
Was ich tun möchte, ist die Verwendung des Control.HelpRequested-Ereignisses, aber ich bin mir nicht sicher, wie alle Steuerelemente erweitert werden, um dieses Ereignis zu behandeln. http://msdn.microsoft.com/en-us/library/system.windows.forms.control.helprequested.aspx
Es ist nicht wirklich machbar jede Kontrolle „von Hand“ zu aktualisieren, um dieses Ereignis zu behandeln und ich weiß nicht wirklich wie die Idee durch alle Steuerelemente in Form von Schleifen (wie das Formular geöffnet wird), um das Ereignis zu assoziieren Handler.
Gibt es eine gute Möglichkeit, alle Steuerelemente eines Formulars auf ein bestimmtes Ereignis anzuwenden?
Dies wird nur gemacht, aber ich fast das Gefühl, dass ich in der Lage sein sollte, sehr geschätzt so etwas wie diese
[HandleEvent Control.HelpRequested, ApplyTo Typeof(Control)] void MyEventHandler(object sender, EventArgs e) { // code to handle event... }
Irgendwelche Vorschläge oder vielleicht Ideen auf einem anderen Ansatz zu schreiben sind - Dank
Eigentlich habe ich diesen Artikel bereits gelesen und bin so weit gegangen, die ProcessKeyPreview-Methode zu implementieren (übrigens muss der Hilfe-Kontext direkt von der Datenbank kommen, also das Fenster-Hilfe-Dateiformat isn 't eine Option). –
Ich erinnerte mich dann daran, dass ich mithilfe des Fragezeichenknopfs Hilfe geben musste (normalerweise oben rechts in einem Formular), wo Sie auf ein Steuerelement klicken und wieder Kontexthilfe abrufen können. Nach einigen Nachforschungen stieß ich heute Morgen auf das HelpRequested-Ereignis, das passender erscheint als das Abfangen der F1-Taste, da das .NET-Framework dieses Ereignis speziell für Entwickler offenlegt, um ein Hilfesystem zu implementieren. Trotzdem Vorschlag - danke :) –
Ja, das ist die vorgeschlagene Lösung, aber wenn Sie ein "globales" Ereignis auslösen möchten, dann können Sie es von WndProc selbst auslösen, und haben einen einzigen Event-Handler. – Groo