Richtig ist meist nicht der direkte Vergleich mit Color.Transparent, sondern die Alpha-Komponente zu prüfen: vb If bmp.GetPixel(x, y).A <> 0 Then ' Pixel ist nicht transparent End If...
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.**
Verwandte Fragen
Wirkt „Exit For“ in VB.NET 2003 bei geschachtelten Schleifen auf alle Schleifen oder nur auf die aktuelle?
Exit For beendet in VB.NET 2003 nur die aktuelle For-Schleife, nicht alle geschachtelten Schleifen. Wenn du aus mehreren Ebenen gleichzeitig raus willst, brauchst du zusätzliche Logik, z. B. ein...
Wie lösche ich in VB.NET 2003 alle ausgewählten Einträge aus einer ListBox?
In VB.NET 2003 löschst du mehrere markierte ListBox-Einträge am sichersten rückwärts über SelectedIndices, weil sich die Indizes beim Entfernen sofort verschieben. vb Dim i A...
Bis zu welcher Version läuft VB.NET unter Windows XP?
Unter Windows XP läuft VB.NRT höchstens mit einer Version, die noch auf .NET Framework 4.0/4.0.3 basiert – neuere Builds mit höherem .NET-Unterbau laufen auf XP nicht mehr. Micros...
Kann man in VB.NET 2003 Bilder in DLLs speichern und im aktuellen Projekt anzeigen?
Ja – in VB.NET 2003 kannst du Bilder in einer DLL speichern und im aktuellen Projekt anzeigen. Der saubere Weg ist, die Bilder als eingebettete Ressourcen in die DLL aufzunehmen und sie zur Lauf...
Wie lassen sich in VB.NET 2003 Änderungen an einer Originaldatei automatisch in mehreren Projekten aktualisieren?
Ja – aber nicht zuverlässig über „Kopien“ derselben Datei. Der saubere Weg ist, den gemeinsamen Code in eine zentrale Stelle auszulagern; nur dann wirken Änderungen au...
Wie markiert man in VB.NET 2003 in einer RichTextBox alle Vorkommen einer Zeichenkette?
In einer RichTextBox markierst du alle Vorkommen, indem du mit Find ab einer Startposition wiederholt suchst und jeden Treffer per Select + SelectionBackColor hervorhebst; eine eingebaute „Alle...
Wie sortiere ich in VB.NET 2003 ein Array mit 4 Spalten und x Zeilen nach Zeilen?
In VB.NET 2003 kannst du ein „2D-Array“ (Dim a(x,3)) nicht direkt nach Zeilen sortieren. Praktisch musst du immer ganze Zeilen gegeneinander tauschen – also z. B. per BubbleSort oder...