ListBox -> Durch klicken auf ein Item Funktion vom Button ändern

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von AliveDevil.

    ListBox -> Durch klicken auf ein Item Funktion vom Button ändern

    Hallo,
    ich möchte durch das Auswählen eines Eintrages von ner ListBox die Funktion des Buttons verändern.
    Also z.b.
    Beim Eintrag "Combat Arms" soll er den Befehl

    VB.NET-Quellcode

    1. Shell("C:\Nexon\Combat Arms EU\CombatArms.exe")

    ausführen.

    Wie ist sowas zu realisieren?

    Danke,
    Lukas

    Asti schrieb:

    Machs doch einfach mit

    VB.NET-Quellcode

    1. Shell(ListBox1.SelectedItem.Text)

    oder wie auch immer das in VB-Forms geht.

    das kannst du auch direkt bei einem Klick auf das Item machen.

    Dann müsste ich aber da den Pfad mit anzeigen lassen. Also in der ListBox.
    Ich will aber ja nur den Programmnamen da anzeigen lassen.
    Gibt es in VB-Forms nicht auch so einen DataContext?
    Dann könntest du das über den machen.

    Also neue Klasse mit den Eigenschaften "Programmname" und "Pfad" und das ganze dann über den DataContext anbinden
    (so würde es zumindest in WPF funktionieren)

    oder du machst das über den Tooltip
    das war bei mir früher so ne art notlösung :D
    einfach in den Tooltip den Pfad reinschreiben und dan den Rest wie ichs dir im andern Post schon erklärt hab machen

    VB.NET-Quellcode

    1. Dim game As String
    2. Sub Button1_Click()
    3. Select Case game
    4. Case "Combat Arms"
    5. Process.Start("Combat Arms.exe")
    6. Case "MineSweeper"
    7. Process.Start("MineSweeper")
    8. End Select
    9. End Sub
    10. Sub ListBox1_SelectedIndexChanged()
    11. game = ListBox1.SelectedItem
    12. End Sub
    Also mein Code sieht so aus:

    VB.NET-Quellcode

    1. Dim game As String
    2. Sub Button4_Click()
    3. Select Case game
    4. Case "Combat Arms"
    5. Process.Start("C:\Nexon\Combat Arms EU\Combat Arms.exe")
    6. Case "Counter Strike: Source"
    7. Process.Start("CSS")
    8. Case "Counter Strike 1.6"
    9. Process.Start("CS 1.6")
    10. Case "Half-Life 2: Deathmatch"
    11. Process.Start("HL2: DM")
    12. Case "Minecraft"
    13. Process.Start("C:\Minecraft.exe")
    14. End Select
    15. End Sub
    16. Sub ListBox1_SelectedIndexChanged()
    17. game = ListBox1.SelectedItem
    18. End Sub

    Wobei ich mir bei CSS, etc. nicht sicher bin. Aber Combat Arms & Minecraft funkionieren auch nicht.
    Hab beides aber auf den angegebenen Pfäden.
    hmm...bei mir funktioniert der Code ohne Probleme?
    lol....
    folgenden Code ich habe genommen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim game As String
    3. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    4. game = ListBox1.SelectedItem
    5. End Sub
    6. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    7. Select Case game
    8. Case "Minecraft"
    9. Process.Start("C:\Program Files\Minecraft\Minecraft.exe")
    10. End Select
    11. End Sub
    12. End Class

    In ListBox1 ist ein Item ( Minecraft ) und der Button1 ist für den Start zuständig...kA warums bei dir nicht geht...

    kommen fehlermeldungen oder so?
    Also..
    hier mal mein kompletter Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Application.Exit()
    4. End Sub
    5. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    6. Form2.Show()
    7. End Sub
    8. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    9. Form3.Show()
    10. End Sub
    11. Dim game As String
    12. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    13. game = ListBox1.SelectedItem
    14. End Sub
    15. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    16. Select Case game
    17. Case "Minecraft"
    18. Process.Start("C:\Minecraft.exe")
    19. End Select
    20. End Sub
    21. End Class


    Und so sieht der Inhalt meiner ListBox1 aus:

    Quellcode

    1. Combat Arms
    2. Counter Strike: Source
    3. Counter Strike 1.6
    4. Half-Life 2: Deathmatch
    5. Minecraft


    Ich weiß nichtmehr, wodrann es liegen könnte.
    Es kommen keine Fehlermeldungen
    Brauchen die Programme Parameter und / oder müssen sie in dem Verzeichnis laufen?
    Sieh Dir mal dies an:

    VB.NET-Quellcode

    1. Dim startInfo As New System.Diagnostics.ProcessStartInfo()
    2. startInfo.FileName = "notepad.exe"
    3. Process.Start(startInfo)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das sähe bei mir etwa so aus:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Programmnamen(5) As String
    3. Dim Pfade(5) As String
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. Programmnamen = {"CD Burner XP", _
    6. "ACDsee 32", _
    7. "Ant Renamer", _
    8. "Ccleaner", _
    9. "ET Starter pro"}
    10. Pfade = {"C:\Program Files\CDBurnerXP\cdbxpp.exe", _
    11. "C:\Program Files (x86)\ACD Systems\ACDSee\ACDSee.exe", _
    12. "C:\Program Files (x86)\Ant Renamer\Renamer.exe", _
    13. "C:\Program Files (x86)\CCleaner\CCleaner64.exe", _
    14. "E:\#Games\ET Starter Pro\ETStarterPro.exe"}
    15. For Each item As String In Programmnamen
    16. ListBox1.Items.Add(item)
    17. Next
    18. End Sub
    19. Dim SelectedProgram As Integer
    20. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    21. Button1.Text = ListBox1.SelectedItem & " starten"
    22. SelectedProgram = ListBox1.SelectedIndex
    23. End Sub
    24. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    25. Process.Start(Pfade(SelectedProgram))
    26. End Sub
    27. End Class