Thema Listbox

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Syhas.

    Thema Listbox

    Hey Leute,
    Ich bin neu hier und weiß daher nicht genau wie oft dieses Thema schon durchgekaut wurde.
    Also ich hab folgendes Problem:
    Ich möchte für einen Freund einen MP3Player programmieren was schon ziemlich weit geklappt hat,
    nun ist es so, nachdem er fertig mit den ersten importierten Song ist stopt der player und nimmt nicht das nächste
    Lied in der liste.
    Meine Frage ist daher Wie kann ich in der listbox 1 Member nach unten scrollen o. eine Listbox counten, und dann auf den Count weißen.
    Hier mal der Code:
    Label15.Text = Val(Label15.Text) + Val(1)
    If Label15.Text = "60" Then
    Label15.Text = "0"
    Label13.Text = Val(Label13.Text) + Val(1)
    End If

    If AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsStopped Then
    Timer2.Enabled = False
    Label17.Text = "0"
    TrackBar2.Value = "0"
    TrackBar2.Maximum = "180"

    End If
    Label17.Text = Val(Label17.Text) + Val(1)
    If Label17.Text >= 180 Then
    TrackBar2.Maximum = 250
    Else
    TrackBar2.Maximum = 200
    End If
    If Label17.Text >= 250 Then
    TrackBar2.Maximum = 300
    End If
    If Label17.Text >= 300 Then
    TrackBar2.Maximum = 350
    End If
    If Label17.Text >= 350 Then
    TrackBar2.Maximum = 400
    End If
    TrackBar2.Value = Label17.Text
    -------------------------------------------
    Grundsätzlich wird hier nur geklärt, was passieren soll wenn er fertig ist mit dem Song, und Wielange der Song schon spielt (In 0:00 u. Grafisch mit einer trackbar)
    An den Punkt wo er aufhört soll er dann den nächsten song in meiner listbox abspielen Leider hab ich keine ahnung wie das geht
    Vllt Könnt ihr mir ein Beispiel Posten bzw mein Code verwenden

    danke fürs Helfen
    Args ohne VB-Tags ist das ja grauenhaft.

    Ich bin neu hier und weiß daher nicht genau wie oft dieses Thema schon durchgekaut wurde.
    Würde man erfahren, wenn man sich der Suche bemächtigt.


    Ändere bitte deinen Post und sage bitte verständlich was du versuchst, und wir sagen dir was du tun könntest um eine eigene Lösung zu entwickeln.
    Angenommen in meiner listbox sind 3 Member
    Song1
    Song2
    Song3

    Ich klick doppelt drauf und der Mediaplayer fängt an es zu spielen.
    Nach den Lied möchte ich das meine Listbox automatisch den nächsten song selektiert also Song2 danach song3 usw
    Ich weiß schon wie ich das ereignis abfange wann das lied zuende ist.
    Ich weiß schon wie ich das ereignis abfange wann das lied zuende ist.
    Gut dann wäre dies ja das Event.

    Und jetzt müsstest Du nur den Index erhöhen, ungefähr so...

    Quellcode

    1. listBox1.SelectedIndex += 1;





    dann müsstest Du aber dafür sorge tragen, das auch das Lied abgespielt wird, weil dann das Event SelectedIndexChanged invoked wird, nicht ItemDoubleClick (oder wie nennt sich das?).
    Wow ich danke dir, klappt nun endlich! (Ich habs so geschrieben der er immer das selektierte item abspielt)
    Ich habe gestern schon dne ganzen Abend gegoogelt aber nichts passendes gefunden:)

    Ich bin ja nun ein ziemlicher neuling wie du ja an den Work Arounds siehst

    Gibts eine möglichkeite sozusagen zuwissen wielang das lied in sekunden ist?
    Hi.

    Schön das es funktioniert. Ich habe mit dem MediaPlayer noch nicht allzuviel gemacht. Das Googlen hat mir C++-Quellcode ausgesprucht, den ich mal eben übersetze.

    Du brauchst aber einen Timer dafür. In das Timer_Tick Event könntest du so etwas wie den folgenden Quellcode nehmen


    Quellcode

    1. // Dies würde den aktuellen Stand angeben (bspw. 14 Sekunden)[Name deines WMP-Controls].Ctlcontrols.currentPositionString
    2. // Dies gibt dir die Länge des Lieds aus[Name deines WMP-Controls].currentMedia.durationString



    Ich habs jetzt nur so aus dem Beispiel übersetzt, das würde aber sinn geben. Ein guter Blick wäre auch einer in die MSDN-Bilbiothek, stikwort wäre deine WMPLib.
    Das wiederum hab ich nun nicht ganz so verstanden, Ich habe bereits die SuFu benutzt und ein beispiel gefunden. Aber es bringt mir ja nix wenn ichs kopiere
    Ich will es verstehen damit ich es beim nächsten mal auch kann, und das versteh ich nich :P

    [Allgemein] MP3 länge auslesen

    Könntest du mir das etwas ausführlicher erklären?

    Danke für deine Hilfe
    Das Beispiel, welches Du gefunden hast, bringt Dich nicht weiter. Dies beschreibt wie Du aus einer Datei (ohne sie auszuspielen) die absolute Länge auslesen kannst.

    Du möchtest jetzt ja anzeigen, wie lange das Musikstück, bzw. die Mediendatei ist. Und - evtl. noch besser - an welche Stelle aktuell die Wiedergabe ist.

    Desweiteren spielst Du deine Datei mit dem AxWindowsMediaControl (aus der Datei WMPLib.dll) ab. Eine Übersicht zu den Methoden, Eigenschaften und Collections dieses Objekts, kann man sich auf der offiziellen MSDN-Website (Hilfedokumentation zu allen Objekten des .NET Frameworks und API) anschauen.

    Der Link für dieses Objekt wäre: msdn.microsoft.com/en-us/library/dd562388(VS.85).aspx

    Und in dieser Library hast Du die Eigenschaft currentMedia - dies lässt Dich auf Informationen deiner aktuellen Datei zugreifen.


    Mithilfe der Punktnotation (Control.Eigenschaft.SubEigenschaft) kannst du jetzt auf dessem Member (=SubEigenschaft) zugreifen. Dieser nennt sich durationString.


    Beispielsweise:

    VB.NET-Quellcode

    1. AxWindowsMediaPlayer1.currentMedia.durationString
    2. ' oder als Ausgabe per MessageBox
    3. messageBox.Show("Länge:" & AxWindowsMediaPlayer1.currentMedia.durationString))


    Und Zugriff auf den aktuellen Fortschritt, erhälst Du über das Ctlcontrols-Interface. Der Member currentPositionString sollte Dir den aktuellen Zeitpunkt der Wiedergabe zurückgeben,


    (Ich habs nicht getestet...)
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    OpenFileDialog1.ShowDialog()

    End Sub

    Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
    For Each track As String In OpenFileDialog1.FileNames
    ListBox1.Items.Add(track)
    Next
    End Sub

    Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
    AxWindowsMediaPlayer1.URL = ListBox1.SelectedItem
    Label16.Text = "Song : " & ListBox1.SelectedItem
    Timer2.Enabled = True
    Label15.Text = "0"
    Label13.Text = "0"
    Label17.Text = "0"
    TrackBar2.Value = "0"
    TrackBar2.Maximum = "180"
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    Label15.Text = Val(Label15.Text) + Val(1)
    If Label15.Text = "60" Then
    Label15.Text = "0"
    Label13.Text = Val(Label13.Text) + Val(1)
    End If

    If AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsStopped Then

    Label17.Text = "0"
    TrackBar2.Value = "0"
    TrackBar2.Maximum = "180"
    Label13.Text = "0"
    Label15.Text = "0"
    Try
    ListBox1.SelectedIndex += 1
    AxWindowsMediaPlayer1.URL = ListBox1.SelectedItem

    Catch ex As Exception

    End Try


    End If
    Label17.Text = Val(Label17.Text) + Val(1)
    If Label17.Text >= 180 Then
    TrackBar2.Maximum = 250
    Else
    TrackBar2.Maximum = 200
    End If
    If Label17.Text >= 250 Then
    TrackBar2.Maximum = 300
    End If
    If Label17.Text >= 300 Then
    TrackBar2.Maximum = 350
    End If
    If Label17.Text >= 350 Then
    TrackBar2.Maximum = 400
    End If
    TrackBar2.Value = Label17.Text


    End Sub

    Private Sub TrackBar1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
    AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value * Val(10)
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    AxWindowsMediaPlayer1.Ctlcontrols.stop()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    AxWindowsMediaPlayer1.Ctlcontrols.pause()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    AxWindowsMediaPlayer1.URL = ListBox1.SelectedItem
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    Me.ListBox1.Items.RemoveAt(Me.ListBox1.SelectedIndex)
    End Sub
    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    AxWindowsMediaPlayer1.currentMedia.durationString

    ' oder als Ausgabe per MessageBox
    messageBox.Show("Länge:" & AxWindowsMediaPlayer1.currentMedia.durationString))
    end sub


    (habe keine imports drin wie :import system.io oder sowas