Jeder Listbox-Eintrag ein neuer Button + mit unterschiedlichen Links auf Websiten

  • VB.NET
  • .NET (FX) 4.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Jeder Listbox-Eintrag ein neuer Button + mit unterschiedlichen Links auf Websiten

    Ich möchte in eine Listbox Dateien von einem Ordner einlesen (jede Datei hat den Namen, den der Button haben soll) und diese Aufgelisteten Dateien sollen dann alle einen eigenen Button bekommen. Und jeder Button soll zu einer anderen Website führen (die Websitee steht in der Datei).

    Mein Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private x As Integer
    3. Private y As Integer
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. ListBox1.Items.AddRange(System.IO.Directory.GetFiles("pfad_zu_den_dateien/", "*"))
    6. For i = 0 To ListBox1.Items.Count - 1
    7. If ListBox1.Items(i).ToString.Contains("pfad_zu_den_dateien") Then
    8. ListBox1.Items(i) = ListBox1.Items(i).ToString.Replace("pfad_zu_den_dateien", "")
    9. End If
    10. Next
    11. ListBox1.SelectedIndex += 1 'das geht nicht...?
    12. For Each item In ListBox1.Items ' das geht nicht
    13. x = +100 'bei mehreren Einträgen sind die nöchsten Buttons immer neben den vorherigen
    14. y = 10
    15. Dim text As String = ListBox1.SelectedItem
    16. Dim button1 As New Button
    17. With button1
    18. .Left = x
    19. .Top = y
    20. .Tag = text
    21. .Text = text
    22. Me.Controls.Add(button1)
    23. .Show()
    24. x += .Height + 10
    25. y += .Width + 10
    26. AddHandler .Click, AddressOf Button_Click
    27. End With
    28. Next
    29. End Sub
    30. Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    31. 'Hier soll der Code für das Öffnen der unterschiedlichen Websiten rein.
    32. End Sub


    Danke für eure Hilfe...
    :thumbup:
    Hallo Hilfe0987,

    dies als kleine Gedankenstütze ...

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. ListBox1.Items.AddRange(New String() {"www.google.de", "www.vb-paradise.de", "www.amazon.de", "www.apple.de"})
    5. For Each item As String In ListBox1.Items
    6. Dim button1 As New Button
    7. With button1
    8. .Size = New Size(100, 40)
    9. .Text = item
    10. End With
    11. Me.FlowLayoutPanel1.Controls.Add(button1)
    12. AddHandler button1.Click, AddressOf Button_Click
    13. Next
    14. End Sub
    15. Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    16. Dim Button As Button = CType(sender, Windows.Forms.Button)
    17. Process.Start(Button.Text)
    18. End Sub
    19. End Class


    Es gilt zu beachten, das der einfachheitshalber ein FlowlayoutPanel verwendet wurde. (FlowlayoutPanels ordnen den Inhalt automatisch !)
    Das ist mMn komplettes Fehldesign. Benutze statt der Listbox ein ListView-Control. Dann trägst du in jedes Item den Namen und jeweils in das Subitem den Link. Und dann wirfste die Idee mit den Buttons weg und benutzt stattdessen die Ereignisse des Listview(bspw. DoubleClick). Und dann öffnest du den Link mit irgendeinem Browser.

    LG