HJST1979 Geschrieben 28. Juli 2010 Geschrieben 28. Juli 2010 Hallo vielleicht kann mir hier jemand helfen. Ich habe einen kleinen Designer programmiert. Das heißt es steht ein leeres FORM zur Verfügung auf dem der Endanwender seine Controls ziehen kann. Jetzt kann es sein dass er das erste Control (Button) unten rechts anfügt und das zweite Control (ComboBox) oben links. Das ist soweit kein Problem. ABER ich bräuchte die Controls genau in folgender Reihenfolge: 1. ComboBox, 2. Button Momentan habe ich beim durchlaufen der Controls folgenden Code: Dim C as Control For Each C in M.Controls 'Hier mein Code Next Durch diesen Code läuft er aber zuerst auf den Button und dann auf die Combobox. Habe auch schon versucht den TabIndex zu setzen aber das Ändert leider nichts ;-( Würde mich über den entscheidenden Tipp freuen Gruß Hans-Jörg Zitieren
chrixko Geschrieben 28. Juli 2010 Geschrieben 28. Juli 2010 Wenn du eine besondere Sortierung haben möchtest, könntest du zum Beispiel eine ControlComparer-Klasse erstellen die das IComparer-Interface implementiert. Dann kannst du die Controls einfach in eine sortierbare Liste übertragen und diese dann mit der Comparer-Klasse sortieren. So wie ich deinen Fall verstehe möchtest du nach der Position sortieren? Dann müsstest du die Liste einfach nach der X.Position sortieren. Kleines Beispiel: Comparer-Klasse Public Class ControlComparer Implements IComparer(Of Control) Public Function Compare(ByVal x As System.Windows.Forms.Control, ByVal y As System.Windows.Forms.Control) As Integer Implements System.Collections.Generic.IComparer(Of System.Windows.Forms.Control).Compare Return x.Top.CompareTo(y.Top) End Function End Class Nutzung: Dim li As New List(Of Control) For Each c As Control In Controls li.Add(c) Next li.Sort(New ControlComparer()) 'Sortierte Liste Zitieren
HJST1979 Geschrieben 28. Juli 2010 Autor Geschrieben 28. Juli 2010 Hi super danke, das war die Lösung wie ich sie mir vorgestellt habe. Gruß Hans-Jörg Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.