Labels, Buttons etc. dynamisch erzeugen. How ?

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von gs93.

    Labels, Buttons etc. dynamisch erzeugen. How ?

    Sers'

    Ich habe 2 Fragen, die SuFu bringt mir nix, genausowenig wie Google.

    Ich will per Button, bei einem TabControl, einen Tab adden (das habe ich schon) & nun sollen auf dem neuen Tab. An bestimmten Positionen Labels & Buttons erscheinen. Eben, wie auf dem 1. Tab.

    - Danke bei Antwort mir Code.



    2. Diese sollen, dann eben noch mit speziellen Optionen, wie BorderStyle, FlatStyle etc. versehen sein ;)

    - Danke, Antwort im oberen Code einbauen.



    Viel Dank.



    /MfG;
    Also 1. Button erstellen.

    VB.NET-Quellcode

    1. Dim Bnt1 as new Button


    Dann kannst die eigenschaften einstellen. zB:

    VB.NET-Quellcode

    1. Bnt1.Text = "Hallo Button"
    2. Bnt1.Size = New Size(New Point(20, 20))


    Button einer Bestimmen TabPage hinzufügen.

    VB.NET-Quellcode

    1. TabPage2.Controls.Add(Bnt1)

    theonly112 schrieb:

    Dann kannst die eigenschaften einstellen. zB:

    VB.NET-Quellcode

    1. Bnt1.Text = "Hallo Button"
    2. Bnt1.Size = New Size(New Point(20, 20))

    Oder so:

    VB.NET-Quellcode

    1. Dim Bnt1 as new Button With {.text = "Hallo", .Size = New Point(30,20), BackColor = Color.Black}

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Dann noch ne Frage.

    Also, wenn man dann auf den Button klickt, soll ja was passieren.

    Wie macht man dass dann ?

    Also, eben ein Button Event für den jeweiligen Button.

    Dazu noch:

    Dann schreibe ich Beispiels weise:

    TabControl1.TabPages(2).Control.Add(Button2)

    Wie "veralgemeinere" ich das jetzt, dass es bei jeder "Addung" eines Tabs' das für den jeweiligen Tab ausführt ?

    Rokky schrieb:

    Für ein Klick Event zum Beispiel

    (aus dem Kopf)

    VB.NET-Quellcode

    1. AddHandler Btn1.Click, AddressOf Klickbla
    2. Public Funtion Klickbla() <--- das soll natürlich SUb heißen. Bei einer Function gibt es sinniger Weise auch ein Return
    3. MsgBox "Hi"
    4. End Function

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Du kannst ja mitzählen, wie oft schon Tabpages geaddet wurden und es dann so schreiben:

    VB.NET-Quellcode

    1. Dim x As New Button With {Eigenschaften}
    2. TabControl1.TabPages(Mitgezählt).Control.Add(x)

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Das ist bis jetzt mein Code:

    VB.NET-Quellcode

    1. TabControl1.TabPages.Add("Visible Login [" & ah & "]")
    2. ah = ah + 1
    3. Button2.Text = "Verbinden"
    4. Button2.Font = New Font("Arial", 9)
    5. Button2.Size = New Size("260", "27")
    6. Button2.FlatStyle = FlatStyle.Popup
    7. Button2.FlatAppearance.BorderSize = "0"
    8. TabControl1.TabPages(x).BackgroundImage = My.Resources.knl21
    9. TabControl1.TabPages(x).Controls.Add(Button2)
    10. Button2.Location = New Point(11, 321)
    11. Label2.Text = "Chats:"
    12. Label2.Font = New Font("Arial", 9)
    13. Label2.Location = New Point(16, 106)
    14. Label2.Size = New Size(46, 16)
    15. Label2.BackColor = Color.Transparent
    16. TabControl1.TabPages(x).Controls.Add(Label2)
    17. ComboBox2.Items.Add("Knuddels.de")
    18. ComboBox2.Items.Add("Knuddels.ch")
    19. ComboBox2.Items.Add("Knuddels.at")
    20. ComboBox2.Items.Add("Mainfrankenchat")
    21. ComboBox2.Text = "Knuddels.de"
    22. ComboBox2.Font = New Font("Arial", 9)
    23. ComboBox2.Size = New Size(186, 23)
    24. TabControl1.TabPages(x).Controls.Add(ComboBox2)
    25. ComboBox2.Location = New Point(85, 99)
    26. TextBox4.BorderStyle = BorderStyle.None
    27. TextBox4.Size = New Size(184, 22)
    28. TextBox4.Location = New Point(86, 190)
    29. TextBox4.Font = New Font("Arial", 10)
    30. TextBox4.Multiline = True
    31. TabControl1.TabPages(x).Controls.Add(TextBox4)
    32. TextBox5.BorderStyle = BorderStyle.None
    33. TextBox5.Size = New Size(179, 16)
    34. TextBox5.PasswordChar = "*"
    35. TextBox5.Location = New Point(89, 220)
    36. TextBox5.Font = New Font("Arial", 10)
    37. TabControl1.TabPages(x).Controls.Add(TextBox5)
    38. TextBox6.BorderStyle = BorderStyle.None
    39. TextBox6.Size = New Size(179, 20)
    40. TextBox6.Location = New Point(88, 251)
    41. TextBox6.Font = New Font("Arial", 10)
    42. TextBox6.Multiline = True
    43. TabControl1.TabPages(x).Controls.Add(TextBox6)
    44. RichTextBox2.BorderStyle = BorderStyle.None
    45. RichTextBox2.Size = New Size(227, 222)
    46. RichTextBox2.Location = New Point(307, 120)
    47. RichTextBox2.Font = New Font("Arial", 10)
    48. TabControl1.TabPages(x).Controls.Add(RichTextBox2)
    49. RichTextBox2.ReadOnly = True
    50. ListBox2.Visible = False
    51. ListBox2.Size = New Size(1, 1)
    52. x = x + 1


    Aber, wenn ich jetzt ein 2. mal meinen Tab adde, springt alles auf Tab 3 & auf Tab 2 ist wieder nichts.
    Du musst jedesmal einen neuen Button erstellen:

    VB.NET-Quellcode

    1. Class Form1
    2. ..
    3. Private Count as Integer
    4. Sub Form1_Load(..)
    5. count = 1
    6. end sub
    7. Private Sub MenuStripClick(ByV..)
    8. dim Button2 as New Button
    9. dim Tabpage as New Tabpage
    10. Tabpage.name ="..." & count
    11. tabpage.text = "tab Nummer " & count
    12. Button2.Text = "Button1 auf Tabpage " & count
    13. Tabpage.conrols.add(Button2)
    14. ...
    15. TabControl.Tabpages.add(Tabpage)
    16. count +=1
    17. End sub
    18. end class
    Das ist meine Signatur und sie wird wunderbar sein!
    Zu dem Thema gibt es hier eine ganz schöne Videoanleitung.
    Trotzdem habe ich eine Frage.

    Ich will eine Soundbar erstellen und damit ich nicht jedesmal den Quellcode verändern muss, wenn ein neuer Sound dazukommt, will ich die Buttons für die Sounds zur Laufzeit erstellen.
    Das funktioniert auch aber wenn ich das Programm neu starte sind die Buttons wieder weg. Wie kann ich die neu erstellten Buttons dauerhaft behalten?