Ich habe ein Formular, das sich selbst schließt, wenn die ESC-Taste gedrückt wird, dank , ProcessKeyEventArgs
, ProcessCmdKey
oder was auch immer. Aber ich habe ein Steuerelement auf diesem Formular, das sehr relevante Dinge tut, wenn ESC gedrückt wird (es versteckt sich) und das Formular sollte nicht geschlossen werden, wenn das passiert.Wie schließe ich ein Formular, wenn die ESC-Taste gedrückt wurde, aber nur wenn kein Steuerelement es behandelt?
Die Steuerung verwendet das KeyDown
Ereignis und stellt die SuppressKeyPress
Flags auf wahr, aber das geschieht nach die zuvor erwähnte Schlüssel Vorschau bilden, wodurch keine Wirkung.
Gibt es eine Art KeyPostview?
Wie schließe ich das Formular nicht, wenn ein Control eine relevante Verwendung eines Schlüsseltreffers hat?
Bearbeiten: Die Steuerbehandlung ESC ist eine Textbox in einem Hand-Maid-ListView eingebettet. Das Textfeld wird angezeigt, wenn der Benutzer auf eine Zelle klickt und die Edition aktiviert. Um den neuen Text zu validieren, wäre ENTER schön (das funktioniert bereits, da der Fokus auf etwas anderes gelegt wird). Um die Ausgabe abzubrechen, scheint ESC am natürlichsten zu sein.
Ich bin etwas misstrauisch gegenüber dem Design an erster Stelle. Wird sich der durchschnittliche Benutzer mit der Esc-Taste wohlfühlen und zwei sehr unterschiedliche Dinge tun? Werden sie das Konzept des "Fokus" und der "aktiven Kontrolle" gut genug verstehen, um zu erwarten, was passieren wird? Stellen Sie zumindest sicher, dass Sie dies aus der Perspektive des Benutzers und nicht nur des Entwicklers betrachten. –
Denken Sie an Excel. Wenn Sie eine Zelle doppelklicken, können Sie sie bearbeiten. ESC bricht die Ausgabe ab. – Gabriel
aber Excel schließt nicht, wenn Sie ESC git, wie Sie Ihre App beschrieben haben –