Durch Zufall fand ich auf diesem Link eine Lösung zu genanntem Problem. Ich zitiere mal den ursprünglichen Autoren: "Man merkt es, wenn man schnell mal eine Windows Form mit vielen Controls 'belegt' und dabei nicht auf die Reihenfolge geachtet hat. In diesem Beispiel gibt's eine TabStopSorter-Klasse, der man einfach eine Form im Konstruktor übergeben muss, und schon sind die TabStopps sortiert." Und genau das Problem hatte ich öfters schon- vor allem, wenn man die Controls in Anzahl und/oder Location im Zuge der Entwicklung immer mal verändern muss. Wenn man die folgende Klasse zur Verfügung hat, kann man eben schnell die richtige Tabstop-Reihenfolge herstellen. Ich habe den ursprünglichen Code noch etwas ergänzt. Man kann nun noch in einem Array angeben, welche Typen von Controls in die Sortierung einbezogen werden sollen. Die Klasse: Public Class TabStopSorter Public Sub New(ByVal StartControl As Control, _ Optional ByVal typCtrl() As Control = Nothing) Dim TmpListe As New List(Of Control) Dim i As Integer = 0 For Each C As Control In StartControl.Controls If typCtrl Is Nothing Then TmpListe.Add(C) Else For j As Short = 0 To typCtrl.Length - 1 Dim ty As Type = C.GetType If ty.Equals(typCtrl(j).GetType) Then TmpListe.Add(C) End If Next End If Next TmpListe.Sort(New ControlComparer) For Each C As Control In TmpListe C.TabIndex = I I += 1 If C.Controls.Count > 0 Then Dim x As New TabStopSorter(C) End If Next End Sub Private Class ControlComparer Implements IComparer(Of Control) Public Function Compare(ByVal x As Control, ByVal y As Control) As Integer _ Implements System.Collections.Generic.IComparer(Of Control).Compare If x.Top <> y.Top Then Return x.Top.CompareTo(y.Top) Else Return x.Left.CompareTo(y.Left) End If End Function End Class End Class Zwei Beispiele der Verwendung 1. So werden alle Controls auf einer Form Tabstop-mäßig sortiert: Dim ctrlSorter As New TabStopSorter(Me) 2. und so nur die Textboxen und Checkboxen Dim cy() As Control = {New TextBox, New CheckBox} Dim ctrlSorter As New TabStopSorter(Me, cy) Dieser Tipp wurde bereits 11.818 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |