Warum wird das nie aufgerufen?
%Vor%Dies scheint für Mausereignis dasselbe zu sein
Ich habe in einigen Foren gelesen, dass PGrid es schwierig macht, solche Ereignisse auszulösen, wenn sie sie von Control übernehmen, aber nicht wirklich hochhebt. ist das wahr ? Wenn ja, wie kann man das umgehen?
EDIT 1:
Da dies "regulär" zu sein scheint, finde ich es sehr leicht von MS, dies nicht explizit in der MSDN-Referenz des propertyGrid anzugeben Klassen- und Verlassen-Ereignisse "wie sie sind", als ob sie verwendbar wären, während sie es nicht sind. Schwierige Dinge wie diese werden zumindest normalerweise in "Notizen" innerhalb der Referenzen angegeben.
EDIT 2:
Ich kodiere gerade einen Workaround. Ich werde es bald veröffentlichen.
Die Eigenschaft PropertyGrid
KeyDown
ist als Browsable(false)
gekennzeichnet - vermutlich können wir daraus schließen, dass sie nicht von sich aus unterstützt wird, sondern tatsächlich als Nebeneffekt von ihr vorliegt Vererbungshierarchie.
Interessanterweise wird das Attribut EditorBrowsable
(welches auch ein Designer-Indikator für Intellisense und dergleichen ist) als EditorBrowsableState.Advanced
festgelegt - wobei wir EditorBrowsableState.Never
erwarten würden, sollte die vorherige Annahme wahr sein.
Einige Informationen von MSDN Foren umreißt das warum dieser Situation:
Aus dem Tool UI-Spion können wir sehen, dass das PropertyGrid nur ein ist Panel und es besteht aus drei Windows-Steuerelementen. Unser KeyDown-Ereignis sollte von der untergeordneten Steuertabelle verarbeitet werden. Die Struktur:
%Vor% Die vorgeschlagene Lösung (ebenfalls in der MSDN-Verknüpfung) zur Überwindung dieses Problems besteht darin, native Systemaufrufe zum Abrufen von Fenster- / Steuerinformationen, Unterklasse NativeWindow
und Überschreiben der WndProc
-Methode zum Behandeln der von Ihnen gewünschten Ereignisse% co_de zu verwenden % in diesem Fall.
Sie können dies überschreiben aus der Unterklasse von PropertyGrid
, um einige Schlüsselinformationen aus der Windows-Nachricht