| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Enter-Tastendruck in TextBox abfangen (1639 mal gelesen)
|
sebastian. Mitglied
Beiträge: 90 Registriert: 03.09.2009 Windows XP Prof. SP3 AutoCAD 2010 Visual Studio 2008 / 2010 Prof.
|
erstellt am: 27. Jul. 2010 15:21 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe für eine TextBox zwei EventHandler für die KeyPress- und KeyDown-Events registriert. In den EventHandlern möchte ich Abfangen, sobald die "Enter/Return"-Taste gedrückt wird. Das funktioniert in einer normalen WinForm auch erwartungsgemäß, auf der GUI meines AutoCAD-Addons allerdings nicht. Für andere Tasten wird auch in AutoCAD wenigstens eines der Events ausgelöst...nur die "Enter"- und die "Druck"-Taste klappen nicht. -> Wie kann ich das Drücken der "Enter"-Taste in einer TextBox abfangen (möchte dann einen Buttonklick auslösen)? Grüße, Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 27. Jul. 2010 15:28 <-- editieren / zitieren -->
Hi, >> Wie kann ich das Drücken der "Enter"-Taste in einer TextBox abfangen Wie hast Du denn Dein Userinterface gemacht? CustomControl in Werkzeugpalette? oder in Multifunktionsleisten. In UserControls in Werkzeugpalette kenne ich die Problematik der Tastatureingaben schon mal dadurch, dass gewährleistet bleiben muß, dass die Maus im Textbereich zu verweilen hat, um per Tastatur eintippen zu können. Bewegt man die Maus nach dem Klick in die Textbox wieder weg, dann fängt AutoCAD die Maus sofort wieder und sucht sich ein anders zu fokusierendes Control. Ich glaube aber, wenn die Maus wirklich im Textbereich gehalten wird, sollte sowohl Keypress wie auch KeyDown kommen können; lass wissen, wenn nicht. - alfred - ------------------ www.hollaus.at |
sebastian. Mitglied
Beiträge: 90 Registriert: 03.09.2009 Windows XP Prof. SP3 AutoCAD 2010 Visual Studio 2008 / 2010 Prof.
|
erstellt am: 27. Jul. 2010 15:41 <-- editieren / zitieren --> Unities abgeben:
Hi Alfred, Ich hab die 1. Variante gewählt: PaletteSet und UserControl/Benutzersteuerelement Der Cursor blinkt in der TextBox, wenn ich reinklicke -> klar. Bewege ich die Maus über ein andres Steuerelement, z.B. einen Button, bekomme ich dort das normale visuelle MouseOver Feedback, aber der Cursor blinkt weiter, da ich den Button ja nicht geklickt habe -> klar. Drücke ich z.B. die "Links-Pfeiltaste" verschiebt sich der Cursor um ein Zeichen, obwohl die Maus noch über dem Button steht -> so wie man es erwartet. => KeyPress und KeyDown kommen dann auch, allerdings nicht beim Drücken der "Enter"-Taste Grüße, Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 27. Jul. 2010 15:44 <-- editieren / zitieren -->
Hi, kannst Du mal den Code für die Events zeigen? - alfred - ------------------ www.hollaus.at |
sebastian. Mitglied
Beiträge: 90 Registriert: 03.09.2009 Windows XP Prof. SP3 AutoCAD 2010 Visual Studio 2008 / 2010 Prof.
|
erstellt am: 27. Jul. 2010 15:48 <-- editieren / zitieren --> Unities abgeben:
2 statisch gebundene Events: Code:
Private Sub txtBezeichnung_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtBezeichnung.KeyDown MsgBox("Keydown") End SubPrivate Sub txtBezeichnung_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtBezeichnung.KeyPress MsgBox("Keypress") End Sub
Einfacher geht es kaum, funktioniert nur leider nicht... [Diese Nachricht wurde von sebastian. am 27. Jul. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 27. Jul. 2010 23:00 <-- editieren / zitieren -->
Hi, mit obigen Statements prüfst Du aber nirgends auf <ENTER>, das hätte ich gerne gesehen. Ich hätte es damit abfangen können:
Code: Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp If e.KeyCode = Windows.Forms.Keys.Return Then Debug.Print("du hast <RETURN> gedrückt") End If End Sub
Und yes, mit KeyDown oder KeyPress kommt's nicht (zumindest nicht ohne Spielerei). HTH, - alfred - ------------------ www.hollaus.at |
sebastian. Mitglied
Beiträge: 90 Registriert: 03.09.2009 Windows XP Prof. SP3 AutoCAD 2010 Visual Studio 2008 / 2010 Prof.
|
erstellt am: 28. Jul. 2010 16:22 <-- editieren / zitieren --> Unities abgeben:
Hi Alfred, das Filtern, welche Taste wirklich gedrückt wurde, hätte ich genauso gelöst wie du. Es ging mir nur darum zu zeigen, dass ein <ENTER>-Druck kein KeyPress- und auch kein KeyDown-Event auslöst. Aber deine Lösung mit dem KeyUp-Event hatte ich natürlich nicht versucht, hilft mir aber sehr! -> Danke, klappt super! Grüße, Sebastian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|