Controls dynamisch zur Laufzeit erstellen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von mcdt.

    Controls dynamisch zur Laufzeit erstellen

    Hallo! :)

    Ich habe ein Problem mit dem Programm an dem ich momentan arbeite.
    Ich habe 2 Formen, in einer Form befindet sich eine TextBox, welche eine Zahl einliest.
    Was ich machen will ist: Es sollen in der 2ten form so viele labels und textboxen erscheinen wie in der ersten textbox eingegeben wurde.

    Mfg,

    TehBasic :)

    Edit by Manschula: Der Beitragstitel wurde verändert bzw. angepasst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manschula“ ()

    Huhu,
    ich habe mal google genutzt und folgendes gefunden vielleicht kann dir das ja weiter helfen.

    excelwelt.de/UserForms/dobj.html

    und dies habe ich in einem anderen Forum gefunden

    Spoiler anzeigen

    Hi Donkey,

    das half wirklich weiter, tausend Dank.

    Ein Fehler war unter anderem, dass ich beim Add Befehl MSForms... statt nur Forms... genutzt habe. Stand allerdings in der Hilfe auch tatsächlich mit MSForms drin.

    Hier mal der funktionierende Codeschnippsel:
    wobei NAME der Name des Userforms ist wobei vermutlich auch Me benutzt werden kann.

    VB.NET-Quellcode

    1. Dim MyTextBox As MSForms.TextBox
    2. Private Sub CommandButton1_Click()
    3. Set MyTextBox = NAME.Controls.Add("Forms.TextBox.1")
    4. With MyTextBox
    5. .Left = 54
    6. .Top = 30
    7. .Height = 24
    8. .Width = 90
    9. End With
    10. End Sub


    Werde jetzt noch versuchen das ganze in einer Schleife auszuführen und in eine Multipage einbinden.

    Vielen Dank nochmal
    Daniel

    PS: Falls alles gut geht poste ich den funktionierenden Code anschließend hier.
    Hey,

    das ist kein Textbox-Problem. Also bitte zukünftig einen aussagekräftigen Titel wählen. Ein Label kannst du dynamisch zur Laufzeit beispielsweise so erstellen:

    VB.NET-Quellcode

    1. Dim lbl_hallo As New Label
    2. lbl_hallo.Text = "Neues Hallo-Label"
    3. lbl_hallo.Location = New Point(32, 32)
    4. Me.Controls.Add(lbl_hallo)

    In Kombination mit einer Schleife deiner Wahl kannst du so entsprechend deine gewünschte Anzahl an Elementen dynamisch erstellen.

    Gruß, Manschula

    Manschula schrieb:

    Hey,

    das ist kein Textbox-Problem. Also bitte zukünftig einen aussagekräftigen Titel wählen. Ein Label kannst du dynamisch zur Laufzeit beispielsweise so erstellen:

    VB.NET-Quellcode

    1. Dim lbl_hallo As New Label
    2. lbl_hallo.Text = "Neues Hallo-Label"
    3. lbl_hallo.Location = New Point(32, 32)
    4. Me.Controls.Add(lbl_hallo)

    In Kombination mit einer Schleife deiner Wahl kannst du so entsprechend deine gewünschte Anzahl an Elementen dynamisch erstellen.

    Gruß, Manschula


    Ich habe versucht es in eine Case Anweisung einzubauen, funktioniert trotzdem nicht :)

    Manschula schrieb:

    Hey,

    das ist kein Textbox-Problem. Also bitte zukünftig einen aussagekräftigen Titel wählen. Ein Label kannst du dynamisch zur Laufzeit beispielsweise so erstellen:

    VB.NET-Quellcode

    1. Dim lbl_hallo As New Label
    2. lbl_hallo.Text = "Neues Hallo-Label"
    3. lbl_hallo.Location = New Point(32, 32)
    4. Me.Controls.Add(lbl_hallo)

    In Kombination mit einer Schleife deiner Wahl kannst du so entsprechend deine gewünschte Anzahl an Elementen dynamisch erstellen.

    Gruß, Manschula


    Ich habe versucht es in eine Case Anweisung einzubauen, funktioniert trotzdem nicht :)
    Ist es auch möglich das wenn es ein Label und/oder textbox herstellt, das sie an die form angepasst wird?


    @Kichz

    Tja, folgendes Problem. Der Code weist keine Fehler auf, jedoch erscheint das Label nirgendwo :)

    fichz schrieb:

    Bitte mit einer bisschen genaueren Fehlermeldung.
    Weil "funktioniert nicht" ist etwas mau.

    lg

    fichz schrieb:

    Bitte mit einer bisschen genaueren Fehlermeldung.
    Weil "funktioniert nicht" ist etwas mau.

    lg

    mcdt schrieb:

    ...außerdem ist eine Case Anweisung keine Schleife.
    Google mal nach Schleife + VB.Net
    Wusste nicht das es in eine Schleife gepackt werden muss :p