Hallo,
ich habe mal wieder ein kleines Problem.
Mein Projekt hat ein TabControl mit mehreren TabPages.
Alles was auf den TabPages an Einstellungen gemacht wird, wird in einer XML-Datei gespeichert.
Dazu durchläuft das Programm das TabControl -> TabPage-weise und auf jeder TabPage werden alle Controls der ControlCollection durchlaufen und die zu speichernden Informationen in die XML-Datei geschrieben.
Das funktioniert alles wunderbar. Die XML-Datei ist sauber nach TabPages sortiert.
Auch das anschließende Laden der XML-Datei und füllen der Controls mit den daraus gelesenen Informationen.
Mein Problem ist nun, dass es eine TabPage gibt, auf der ein ganz bestimmtes Control am Anfang der XML-Auflistung dieser TabPage stehen muss.
Dies aus dem Grund, weil der Wert dieses Controls definiert, welches UserControl auf der TabPage zu finden ist.
Dieses muss dann zunächst geladen werden, bevor die nächsten XML Infos geladen und in das UserControl eingetragen werden.
Meine Idee war es nun, die ControlCollection der TabPage vor dem Speichern zu sortieren und zwar so, dass das entscheidende Control am Anfang der Liste steht.
Ich habe zum Sortieren der Liste auch was gefunden.
Hat ein bisschen gedauert bis ich den LINQ Ausdruck verstand habe.
Das sortiert zwar erst mal nach den Koordinaten der Controls, aber das lässt sich ja ändern.
Mein Problem ist, wie bekomme ich die dann sortierte Liste an die Stelle der original ControlCollection?
Das bekomme ich irgendwie nicht hin.
ich habe mal wieder ein kleines Problem.
Mein Projekt hat ein TabControl mit mehreren TabPages.
Alles was auf den TabPages an Einstellungen gemacht wird, wird in einer XML-Datei gespeichert.
Dazu durchläuft das Programm das TabControl -> TabPage-weise und auf jeder TabPage werden alle Controls der ControlCollection durchlaufen und die zu speichernden Informationen in die XML-Datei geschrieben.
Das funktioniert alles wunderbar. Die XML-Datei ist sauber nach TabPages sortiert.
Auch das anschließende Laden der XML-Datei und füllen der Controls mit den daraus gelesenen Informationen.
Mein Problem ist nun, dass es eine TabPage gibt, auf der ein ganz bestimmtes Control am Anfang der XML-Auflistung dieser TabPage stehen muss.
Dies aus dem Grund, weil der Wert dieses Controls definiert, welches UserControl auf der TabPage zu finden ist.
Dieses muss dann zunächst geladen werden, bevor die nächsten XML Infos geladen und in das UserControl eingetragen werden.
Meine Idee war es nun, die ControlCollection der TabPage vor dem Speichern zu sortieren und zwar so, dass das entscheidende Control am Anfang der Liste steht.
Ich habe zum Sortieren der Liste auch was gefunden.
Hat ein bisschen gedauert bis ich den LINQ Ausdruck verstand habe.
Das sortiert zwar erst mal nach den Koordinaten der Controls, aber das lässt sich ja ändern.
Mein Problem ist, wie bekomme ich die dann sortierte Liste an die Stelle der original ControlCollection?
Das bekomme ich irgendwie nicht hin.
VB.NET-Quellcode
- For Each ctrl As Control In frmActiveForm.Controls 'das Form nach Controls durchsuchen
- If TypeOf ctrl Is TabControl Then 'ist Control ein TabControl
- For Each TabPage As Control In ctrl.Controls 'TabPage nach Sub-Controls durchsuchen
- If TabPage.Name = "tabpg_SPIHubCH1" Then
- Dim sortedControls As List(Of Control)
- sortedControls = TabPage.Controls.Cast(Of Control).OrderBy(Function(c) c.Location.X).OrderBy(Function(c) c.Location.Y).ToList()
- 'jetzt habe ich eine sortierte Liste in sortedControls, wie weise ich diese der ControlCollection der TabPage zu?
- End If
- ... 'hier werden dann die Daten in die XML-Datei geschrieben
- Next
- End If
- Next
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „roepke“ ()