[VB.NET]Eingabemaske dynamisch erstellen

desaster0505

Erfahrenes Mitglied
Hallo,

ich habe ein Problem bei dem ich irgendwie nicht auf einen grünen Zweig komme:

Ich möchte eine Eingabemaske dynamisch erstellen in der zuerst eine Combobox, dann z.B. zwei Textfelder und dann wieder eine Combobox auftauchen.

Zwar habe ich schon Funktionen geschrieben mit denen man entweder Textboxen oder Comboboxen dynamisch erstellen und auch den Inhalt dynamisch aufbauenkann, aber ich weiss nicht wie ich das so abwechselnd hinbekomme.

Hinzukommt, dass ich auf die einzelnen Elemente per Index zugreifen will. Auch das habe ich bereits mit meinen Funktionen hinbekommen, aber wie gesagt, an der Kombination von verschiedenen Feldern weiss ich Moment nicht weiter.

Das ganze muss dann auch noch für mehrere Zeilen möglich sein (aber dann nur noch genau der gleiche Aufbau wie in der ersten Zeile z.B. text, combo, combo, text).

Anbei mal der Code für eine dynamisch Textfeld-Erstellung (Combobox-Funktion ist ähnlich), damit ihr seht was ich bisher habe

Visual Basic:
Public Function Control_text_box(ByVal max As Integer, ByRef Items() As String, ByRef loc_values As Text_box_Values, ByVal Formname As Object)

        Dim textArray(max - 1) As TextBox


        For i As Integer = 0 To UBound(textArray)
            textArray(i) = New TextBox
            With textArray(i)
                .Left = loc_values.left + loc_values.distance * i
                .Top = loc_values.top   ' ich habe dafür ein Struct geschrieben wo ich die Standwerte einstelle und dann an die Funktion übergebe, code aber nicht mitgepostet.
                .Width = loc_values.witdh
                .Text = Items(i)
                .Height = 33
            End With

            Formname.Controls.Add(textArray(i))  ' Text-Feld hinzufügen

        Next i

        Return textArray

    End Function



Der Code um die Funktion aufzurufen:

Visual Basic:
Dim ArrText_box() As TextBox
Dim txtbox_Text As String() = New String() {"Höhe", "Breite"} 'Vorgeschriebener Text

ArrText_box = Control_text_box(2, txtbox_Text, Text_Werte, Me)
'Control_text_box(anzahl der Felder, Vorgeschriebener Text, Textfeld-Werte z.B. Höhe, Me)

Sowas ähnliches will ich haben, nur das man Text-Felder und Comboboxen kombinieren kann.

Habe daran gedacht zuerst die Funktion für Combo-Boxen aufzurufen, dann die der Text-felder, aber dann habe ich ja trotzdem keine gemeinsamen Arrays über die ich auf die einzelnen Elemente zugreifen kann.

In VB 6 war das alles nicht nötig, da man den Elementen Indize zuweisen konnte um dann auf die jeweiligen Eigenschaften und Methoden des Elements zuzugreifen.

Für Hilfe, Ansätze wäre ich sehr dankbar.
 
Zuletzt bearbeitet:
Also scheint keiner was eine Idee zu haben.

Habe das jetzt mal so gelöst:
Ich habe das dann eher einfach gemacht und habe eine Funktion geschrieben in die ich die Elemente so erzeuge ich Sie auch in der Maske brauche, also z.B. Kombofeld, Textfeld, Kombofeld usw.

Damit ich auf die Elemente per "Index" ansprechen kann habe ich zwei zweidemensionale Public Arrrays definiert (für ein Kombofeld und ein Textfeld.) Eine Dimension für die Reihe und die zweite für die Referenz auf die Objekte.

Somit kann ich mit Hilfe der Arrays gezielt die Elemente ansprechen.

Möglich wäre es vermutlich auch das ich nur ein Array erzeuge (vom Typ ('Object') und diesem die Elemente/pro Reihe zuweise. Beim auslesen dann aber noch den Typ abfrage und entsprechend einen Cast durchführe.

Hoffe es war verständlich :)
 

Neue Beiträge

Zurück