Hallo Entwicklergemeinde:
Ich benutze Tabcontrol, dieses Tabcontrol enthält mehrere Tabitems.
In jedem Tabitem werden dynamisch mehrere Controls erzeugt. Beispiel:
<stackpanel>
label1 Textbox
</stackpanel>
<stackpanel>
label2 Textbox
</stackpanel>
Nun möchte ich die Textboxen ausgerichtet haben, damit diese in einer Flucht sind.
Das mache ich mit folgendem Code (wird in Main_Loaded ausgeführt)
[highlight=vbnet]
For x As Integer = 1 To Anzahl_tab_items
Select Case x
Case 1
stack_top = StackPanel_top1
Case 2
stack_top = StackPanel_top2
Case 3
stack_top = StackPanel_top3
Case 4
stack_top = StackPanel_top4
Case 5
stack_top = StackPanel_top5
End Select
Dim lb_max_width As Integer = 0
'Ermittlung der max Breite der Labels, damit eine Anpassung mit Tabelleneffekt erfolgen kann
'Ermittlung aller Stackpanels in stackpanel_top
For Each uie As UIElement In stack_top.Children
If TypeOf uie Is StackPanel Then
'Ermittlung aller Labels in dem ermittelten Stackpanel
For Each uie2 As UIElement In CType(uie, StackPanel).Children
If TypeOf uie2 Is Label Then
If lb_max_width < CType(uie2, Label).RenderSize.Width Then
lb_max_width = CType(uie2, Label).RenderSize.Width
End If
End If
Next
End If
Next
'Setzen der min Breite der Labels, damit eine Anpassung mit Tabelleneffekt erfolgen kann
'Ermittlung aller Stackpanels in stackpanel_top
For Each uie As UIElement In stack_top.Children
If TypeOf uie Is StackPanel Then
'Ermittlung aller Labels in dem ermittelten Stackpanel
For Each uie2 As UIElement In CType(uie, StackPanel).Children
If TypeOf uie2 Is Label Then
Dim puffer As Label
puffer = uie2
puffer.Width = lb_max_width + 5
puffer.MinWidth = lb_max_width + 5
End If
Next
End If
Next
Next
System.Windows.Forms.Application.DoEvents()
[/highlight]
Das funktioniert für das erste Tabitem, jedoch nicht für alle weiteren Tabitems.
Dort werden alle Elemente mit der Breite = 0 ermittelt.
Hat jemand von euch da bereits Erfahrungen gesammelt?
Vielen Dank im voraus.
derOptimist
Ich benutze Tabcontrol, dieses Tabcontrol enthält mehrere Tabitems.
In jedem Tabitem werden dynamisch mehrere Controls erzeugt. Beispiel:
<stackpanel>
label1 Textbox
</stackpanel>
<stackpanel>
label2 Textbox
</stackpanel>
Nun möchte ich die Textboxen ausgerichtet haben, damit diese in einer Flucht sind.
Das mache ich mit folgendem Code (wird in Main_Loaded ausgeführt)
[highlight=vbnet]
For x As Integer = 1 To Anzahl_tab_items
Select Case x
Case 1
stack_top = StackPanel_top1
Case 2
stack_top = StackPanel_top2
Case 3
stack_top = StackPanel_top3
Case 4
stack_top = StackPanel_top4
Case 5
stack_top = StackPanel_top5
End Select
Dim lb_max_width As Integer = 0
'Ermittlung der max Breite der Labels, damit eine Anpassung mit Tabelleneffekt erfolgen kann
'Ermittlung aller Stackpanels in stackpanel_top
For Each uie As UIElement In stack_top.Children
If TypeOf uie Is StackPanel Then
'Ermittlung aller Labels in dem ermittelten Stackpanel
For Each uie2 As UIElement In CType(uie, StackPanel).Children
If TypeOf uie2 Is Label Then
If lb_max_width < CType(uie2, Label).RenderSize.Width Then
lb_max_width = CType(uie2, Label).RenderSize.Width
End If
End If
Next
End If
Next
'Setzen der min Breite der Labels, damit eine Anpassung mit Tabelleneffekt erfolgen kann
'Ermittlung aller Stackpanels in stackpanel_top
For Each uie As UIElement In stack_top.Children
If TypeOf uie Is StackPanel Then
'Ermittlung aller Labels in dem ermittelten Stackpanel
For Each uie2 As UIElement In CType(uie, StackPanel).Children
If TypeOf uie2 Is Label Then
Dim puffer As Label
puffer = uie2
puffer.Width = lb_max_width + 5
puffer.MinWidth = lb_max_width + 5
End If
Next
End If
Next
Next
System.Windows.Forms.Application.DoEvents()
[/highlight]
Das funktioniert für das erste Tabitem, jedoch nicht für alle weiteren Tabitems.
Dort werden alle Elemente mit der Breite = 0 ermittelt.
Hat jemand von euch da bereits Erfahrungen gesammelt?
Vielen Dank im voraus.
derOptimist
Comment