Musik abspielen aus Ordner ohne zusatz Player

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 54 Antworten in diesem Thema. Der letzte Beitrag () ist von cyberworm83.

    PS Habe es aktuelle so, was sehr viel schreiberei ist weil die buttons noch mehr werden.

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. Dim playlist As WMPLib.IWMPPlaylist = Einstellungen.AxWindowsMediaPlayer1.newPlaylist("MyPlayList", "D:\blume.m3u")
    3. Einstellungen.AxWindowsMediaPlayer1.currentPlaylist = playlist
    4. Einstellungen.AxWindowsMediaPlayer1.settings.setMode("shuffle", True)
    5. Einstellungen.AxWindowsMediaPlayer1.Ctlcontrols.play()
    6. Button2.Text = "PLAY"
    7. Button3.Text = ""
    8. Button5.Text = ""
    9. End Sub




    Das ist ja die funktionierende Version. Es kommen aber noch mehr Buttons dazu. Dann wäre die Liste mit ButtonX.Text="" elend lang. Das wollte ich umgehen.
    Aber wenn es anscheind nicht machbar ist muss ich halt das so machen
    Jou, es wird langsam unklarer. :S
    @cyberworm83 Eben waren da noch Bilder für ein Kind drauf.
    Beschreibe bitte mal Dein Gesamtkonzept.
    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!
    Versteh auch nicht ganz was Du vor hast, scheint mir eher suboptimal...
    Btw, der Code von @RodFromGermany kann doch auch für das "ÄndereDenTextAufAllenButtons" hergenommen werden:

    VB.NET-Quellcode

    1. Dim btn() As Button = {Button1, Button2, Button3}
    2. For Each bt In btn
    3. bt.Text = ""
    4. Next


    Aber wie gesagt, erkläre doch bitte komplett, was Du genau vor hast, oder mach wenigstens mal nen Screenshot, damit alle wissen, was da ablaufen soll...
    "Hier könnte Ihre Werbung stehen..."
    Also nochmal, falls ich mich falsch ausgedrückt habe.
    Ich habe ein Frame mit 10 Buttons (evtl auch mehr, steht noch nicht fest) auf diesen Buttons sind Bilder von Musik Samplern je Button ein Bild und kein Text.
    Wenn ich nun ein Button anklicke soll Musik des jeweiligen Covers abgespielt werden (funktioniert) desweiteren soll auf dem "aktiven" Button ein "PLAY" erscheinen (funktioniert auch)
    Wenn ich nun einen anderen Button klicke um andre Musik zu hören soll

    VB.NET-Quellcode

    1. Button1.Text = "PLAY"
    2. Button2.Text = ""
    3. Button3.Text = ""

    auf dem vorherigen Button das PLAY verschwinden und auf dem neu angeklickten Button erscheinen.

    VB.NET-Quellcode

    1. Button1.Text = ""
    2. Button2.Text = "PLAY"
    3. Button3.Text = ""

    Ich hatte es so gelößt das (wie oben geschrieben)
    Mit 3 Buttons ist ja nicht viel zu schreiben, nur wenn ich 10 Buttons habe ist es etwas mehr zu schreiben und das wollte ich umgehen (falls möglich)

    Ich hoffe das es jetzt etwas veständlicher ist.
    Du kannst auch eine Sub schreiben, und gibst dieser alle Handles von allen Button_Click, in dieser Sub arbeitest Du dann halt die einzelnen in einem Select Case ab.

    VB.NET-Quellcode

    1. Private Sub Button_Click(sender as Object, e as EventArgs) Handles Button1.Click, Button2.Click ......
    2. Select Case True
    3. Case Sender is Button1
    4. 'tu was mit Button1
    5. Case Sender Is Button2
    6. 'tu was mit Button2
    7. ....
    8. End Sub
    "Hier könnte Ihre Werbung stehen..."
    Verstehe ich jetzt nicht ganz.
    Bei Select case arbeitet das doch nur dann zb Button1 und die restlich werden doch ignoriert oder?
    Sprich dann muss ich doch trotzdem in jeder case anweisung die einzelnen Button Texte schreiben oder irre ich mich da?

    NACHTRAG
    Ich ahbe jetzt das so geändert und es klappt :)
    Ich hatte nur das DIM anfangs ganz an den anfang des Codes geschrieben da hatte es nicht funktioniert.

    VB.NET-Quellcode

    1. Button1.Text = "PLAY"
    2. Dim btn() As Button = {Button2, Button3}
    3. For Each bt In btn
    4. bt.Text = ""
    5. Next

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

    Ja, das musst Du dann halt in jedem Case schreiben.
    Ich denke es gibt mit Sicherheit einen effektieveren Lösungsweg (eventuell mit nem eigenen Event).
    Mach bitte mal nen Screenshot von deinem Programm, ich denke dann wird es für alle einfacher da durchzusteigen...
    "Hier könnte Ihre Werbung stehen..."
    Ok ich habe die Lösung :)

    VB.NET-Quellcode

    1. Private Sub umname()
    2. Dim btn() As Button = {Button2, Button3, Button5}
    3. For Each bt In btn
    4. bt.Text = ""
    5. Next
    6. End Sub


    und dann unter jedem einzelnen Button

    VB.NET-Quellcode

    1. umname()
    2. Button2.Text = "PLAY"
    Hmmm... ich würde die Parameterliste der Buttons immer mitgeben, sonst änderst du den Text von Zum Beispiel Button2 ja jedesmal 2 Mal... und gib der Methode einen Namen, den du in 5 Monaten auch noch verstehst...

    VB.NET-Quellcode

    1. Private Sub RenameButtonText(btn() As Button)
    2. For Each bt In btn
    3. bt.Text = ""
    4. Next
    5. End Sub


    Aufruf:

    VB.NET-Quellcode

    1. RenameButtonText({Button1, Button2, Button3})
    "Hier könnte Ihre Werbung stehen..."
    Du könntest es sogar noch vereinfachen:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private btnList As List(Of Button) 'Liste von Buttons deklarieren
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. btnList = New List(Of Button)({Button1, Button2, Button3, Button4, Button5}) 'neue Liste mit deinen Buttons initialisieren
    6. End Sub
    7. 'hier alle Button.Click Events behandeln
    8. Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click
    9. For Each bt In btnList
    10. If bt Is sender Then 'der gedrückte Button ist der sender und soll dann Play anzeigen
    11. bt.Text = "Play"
    12. 'hier noch mehr mit dem aktuellen PlayButton anstellen
    13. 'Dim playlist As WMPLib.IWMPPlaylist = Einstellungen.AxWindowsMediaPlayer1.newPlaylist("MyPlayList", "D:\blume.m3u")
    14. 'Einstellungen.AxWindowsMediaPlayer1.currentPlaylist = playlist
    15. 'Einstellungen.AxWindowsMediaPlayer1.settings.setMode("shuffle", True)
    16. 'Einstellungen.AxWindowsMediaPlayer1.Ctlcontrols.play()
    17. Else
    18. bt.Text = ""
    19. End If
    20. Next
    21. End Sub
    22. End Class
    "Hier könnte Ihre Werbung stehen..."
    @cyberworm83 Was soll der Tinnef, dass ein Text von einem Button zu einem anderen Button wandert?

    RodFromGermany schrieb:

    Beschreibe bitte mal Dein Gesamtkonzept.
    z.B.:
    Ich will pro Button ein Lied abspielen.
    Dann wäre es gescheit, nur diesen einen Button zu übergeben,
    den Text aller Button zu löschen
    und den Text dieses Buttons zu setzen.
    ====
    Nimm ein FlowLayoutPanel, da kannst Du auch dynamisch beliebig viele Controls reinwerfen.
    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!

    RodFromGermany schrieb:

    Ich will pro Button ein Lied abspielen.
    Dann wäre es gescheit, nur diesen einen Button zu übergeben,
    den Text aller Button zu löschen
    und den Text dieses Buttons zu setzen.


    Das habe ich doch die ganze zeit geschrieben das ich das möchte. aber wie gesagt habs hinbekommen :)