Hallo,
ich habe ein kleines Problem mit dem FlowlayoutPanel. Folgendes Szenario:
In einem Formular ist eine ComboBox, in welcher eine Auftragsart ausgewählt wird. Des weiteren gibt es mehrere (20+) Eingabefelder, welche je nach Auftragsart befüllt werden. Als Beispiel:
Auftragsart 1 -> Feld 1 und Feld 2
Auftragsart 2 -> Feld 2
Auftragsart 3 -> Feld 1 und Feld 3
Auftragsart 4 -> Feld 1 und Feld 2 und Feld 3
Ich habe mich also dazu entschieden, jedes Eingabefeld mit seinem passenden Label in ein Panel zu packen. Diese Panels liegen in einem FlowlayoutPanel. Nun blende ich je nach Auswahl der Auftragsart die entsprechenden Panels ein bzw aus. Dazu habe ich im Tag der Panels hinterlegt, welche Panels bei welcher Auftragsart sichtbar sein soll.
Code beim wechseln der Auftragsart:
Nun will ich den Inhalt aller TextBoxen und ComboBoxen in den Panels leeren, das sollte eigentlich die Zeile nach dem End If machen. Nur ist dort ctrl.visible immer False, auch wenn die Panels richtig angezeigt bzw ausgeblendet sind. Ich könnte zwar die Funktion zum leeren der Inhalte bei jeder Stelle einfügen, wo ich ctrl.Visible = False setze, fand meine Variante aber sinnvoller.
Hat jemand eine Idee woran das liegen könnte?
ich habe ein kleines Problem mit dem FlowlayoutPanel. Folgendes Szenario:
In einem Formular ist eine ComboBox, in welcher eine Auftragsart ausgewählt wird. Des weiteren gibt es mehrere (20+) Eingabefelder, welche je nach Auftragsart befüllt werden. Als Beispiel:
Auftragsart 1 -> Feld 1 und Feld 2
Auftragsart 2 -> Feld 2
Auftragsart 3 -> Feld 1 und Feld 3
Auftragsart 4 -> Feld 1 und Feld 2 und Feld 3
Ich habe mich also dazu entschieden, jedes Eingabefeld mit seinem passenden Label in ein Panel zu packen. Diese Panels liegen in einem FlowlayoutPanel. Nun blende ich je nach Auswahl der Auftragsart die entsprechenden Panels ein bzw aus. Dazu habe ich im Tag der Panels hinterlegt, welche Panels bei welcher Auftragsart sichtbar sein soll.
Code beim wechseln der Auftragsart:
VB.NET-Quellcode
- For Each ctrl As Panel In Me.StammdatenFlowLayoutPanel.Controls.OfType(Of Panel)
- If strAarAuftragsart = "" Then
- ctrl.Visible = False
- ElseIf ctrl.Tag Is Nothing Then
- ctrl.Visible = False
- ElseIf ctrl.Tag.ToString = "*" OrElse ctrl.Tag.ToString.Contains(String.Concat(strAarAuftragsart, "*")) Then
- ctrl.BackColor = Color.OldLace
- ctrl.Visible = True
- ElseIf ctrl.Tag.ToString = "#" OrElse ctrl.Tag.ToString.Contains(strAarAuftragsart) Then
- ctrl.BackColor = Color.Transparent
- ctrl.Visible = True
- Else
- ctrl.Visible = False
- End If
- If bolAuswahl = True AndAlso ctrl.Visible = False Then fncVerstecktePanelsLeeren(ctrl)
- Next
Nun will ich den Inhalt aller TextBoxen und ComboBoxen in den Panels leeren, das sollte eigentlich die Zeile nach dem End If machen. Nur ist dort ctrl.visible immer False, auch wenn die Panels richtig angezeigt bzw ausgeblendet sind. Ich könnte zwar die Funktion zum leeren der Inhalte bei jeder Stelle einfügen, wo ich ctrl.Visible = False setze, fand meine Variante aber sinnvoller.
Hat jemand eine Idee woran das liegen könnte?