Kann man in VB.NET 2003 vorübergehend alle Shortcuts deaktivieren und Tastenkombinationen wie Strg+A als String in eine TextBox einfügen?

Antwort vom

**Ja – aber nicht global für ganz Windows, sondern innerhalb deiner VB.NET-2003-Anwendung. Du musst die Tastenkombinationen selbst abfangen, Standard-Shortcuts unterdrücken und aus den gedrückten Modifiern + Taste einen String wie `Strg+A` bauen.** ## Entscheidend ist der Unterschied `Ctrl+A` ist normalerweise kein „Text“, sondern ein Befehl. In einer `TextBox` führt das meist zu „Alles markieren“, statt dass `Strg+A` als Inhalt erscheint. Wenn du die Kombination als Text speichern willst, musst du genau dieses Standardverhalten blockieren. Sonst gewinnt immer der eingebaute Shortcut. ## So funktioniert es in VB.NET 2003 Am einfachsten ist ein eigenes TextBox-Steuerelement, das `KeyDown` verarbeitet und die Taste nicht normal weitergibt. ```vbnet Public Class ShortcutTextBox Inherits TextBox Protected Overrides Sub OnKeyDown(ByVal e As KeyEventArgs) MyBase.OnKeyDown(e) Dim parts As New System.Collections.ArrayList() If e.Control Then parts.Add("Strg") If e.Alt Then parts.Add("Alt") If e.Shift Then parts.Add("Shift") Dim keyText As String = "" Select Case e.KeyCode Case Keys.ControlKey, Keys.ShiftKey, Keys.Menu keyText = "" Case Else keyText = e.KeyCode.ToString() End Select If keyText <> "" Then parts.Add(keyText) End If Dim result As String = "" Dim i As Integer For i = 0 To parts.Count - 1 If i > 0 Then result &= "+" result &= parts(i).ToString() Next Me.Text = result Me.SelectionStart = Me.Text.Length e.SuppressKeyPress = True End Sub End Class ``` ## Was das konkret macht - `Strg`, `Alt`, `Shift` werden erkannt - die eigentliche Taste wird ergänzt - Standardaktionen wie „Alles markieren“ werden unterdrückt - statt der Aktion landet der Text `Strg+A` in der TextBox ## Wichtige Einschränkung Nur Modifier-Tasten allein, also nur `Strg` oder nur `Shift`, sind etwas speziell. Die erzeugen oft noch keine vollständige Kombination. Praktisch sinnvoll ist meist erst eine Kombination wie: - `Strg+A` - `Alt+F4` - `Strg+Shift+S` ## Typischer Fehler Wenn du nur `KeyPress` benutzt, klappt das nicht sauber. `KeyPress` ist für Zeichen gedacht, nicht für Tastenkombinationen. Entscheidend ist hier `KeyDown`. ## Praktisch bessere Lösung Wenn das Feld wirklich nur zum Erfassen eines Shortcuts dient, solltest du die Eingabe komplett kontrollieren und normales Tippen gar nicht zulassen. Genau dafür ist so eine abgeleitete `TextBox` sinnvoller als eine normale Standard-Textbox mit ein paar Events. **Kurz: Ja, in VB.NET 2003 geht das – du musst die Tastenkombination in `KeyDown` abfangen, Standard-Shortcuts mit `SuppressKeyPress` blockieren und den Text selbst in die TextBox schreiben.**

Kategorie: Technik Tags: VB.NET Shortcuts TextBox

Verwandte Fragen

Wie heißen die einzelnen Menügruppen im MainMenu von VB.NET 2003?

Ja: Diese Einträge heißen in VB.NET 2003 beim MainMenu in der Praxis meist Top-Level-Menüpunkte oder Hauptmenüs; technisch sind es MenuItem-Objekte. Wenn du also „Datei&ldq...