none
Prozedur-Aufruf: Problem mit SelectedIndex aus Listbox RRS feed

  • Frage

  • Guten Morgen,

    erstmal möchte ich dass ihr wisst, dass ich eher selten mit Visual Studio 2010 programmiere. Deswegen entschuldige ich mich für irgendwelche schusseligen Fehler :-)

    Zu meinem Programm:

    Ich habe vor ein Programm zu schreiben, mit welchem ich Videos abspielen lassen kann. Die Videos werden aus einem Verzeichnis eingelesen und die Dateipfade in eine Listbox geschrieben.

    Danach sollen die einzelnen Videos über Buttons ausgewählt werden:

    Button 1 soll ListBox.SelectedIndex 0 wiedergeben. Die Wiedergabe soll dann automatisch fortlaufen, bis das Programm das letzte Video im Verzeichnis beendet hat.

    Nun habe ich folgendes Problem:

    Ich möchte in nicht jedem Button die Prozedur für das fortlaufende Spielen der Videos hinterlegen sondern nur den Index des auszuwählenden Videos festlegen.

    Dazu also in jedem Button eine Funktion aufrufen.

    Das Ganze funktioniert auch schon ganz gut, bis auf den Aufruf der Funktion. Sobald ich diese aufrufe beendet das Programm mit der Fehlermeldung "InvalidArgument=Value mit dem Wert 0 ist für SelectedIndex ungültig."

    Wenn ich allerdings die Prozedur mit in das Button_Click Event schreibe, funktioniert der Vorgang tadellos.

    Wo ist der Fehler? Wie kann ich es machen?

    Anbei der Quelltextausschnitt:

    Public Property kapitel As Integer
        
    Public Sub button_k1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button_k1.MouseDown    'Klick auf Alle abspielen'
            Dim window_lock_1 As New window_lock_1                                                                      'Playerfenster deklarieren'
            window_lock_1.Show()                                                                                        'Playerfenster anzeigen'
            Me.Hide()                                                                                                   'Aktuelles Fenster schließen
            Dim directory As New System.IO.DirectoryInfo("D:\_Projekte\XXX\Kapitel")                    'Deklaration des Verzeichnisses aus dem Informationen gesammelt werden sollen
            window_lock_1.ListBox.Items.Clear()                                                                         'Löscht alle Einträge aus der ListBox
            For Each file1 As System.IO.FileInfo In directory.GetFiles                                                  'Sammelt Dateiinformationen aller Dateien und schreibt diese in eine Listbox
                window_lock_1.ListBox.Items.Add(file1.FullName)                                                         'Schreibt den Dateinamen aus dem Array in die ListBox
            Next
            kapitel = 0
            ResumePlaylist()
        End Sub
    
        Sub ResumePlaylist()
            'spielt das aktuell markierte Video ab.
            window_lock_1.ListBox.SelectedIndex = kapitel
            window_lock_1.player.URL = window_lock_1.ListBox.Items(window_lock_1.ListBox.SelectedIndex).ToString
            Do Until window_lock_1.player.playState = WMPLib.WMPPlayState.wmppsStopped
                Application.DoEvents()
                'System.Threading.Thread.Sleep(100)
                If window_lock_1.player.playState = WMPLib.WMPPlayState.wmppsStopped Then
                    If window_lock_1.ListBox.SelectedIndex < window_lock_1.ListBox.Items.Count - 1 Then
                        window_lock_1.ListBox.SelectedIndex = window_lock_1.ListBox.SelectedIndex + 1
                        window_lock_1.player.URL = window_lock_1.ListBox.Items(window_lock_1.ListBox.SelectedIndex).ToString
                        window_lock_1.button_play.BackColor = Color.DimGray 'Farbe PLAY auf Grau
                        window_lock_1.button_pause.BackColor = Color.AntiqueWhite 'Farbe PAUSE auf Weiß
                        window_lock_1.button_rew.BackColor = Color.AntiqueWhite 'Farbe Rew auf Weiß
                        window_lock_1.button_ffd.BackColor = Color.AntiqueWhite 'Farbe FFD auf Weiß
                    Else
                        Exit Do
                    End If
                End If
            Loop
            MessageBox.Show("Alles abgespielt")
        End Sub

    Bitte nicht großartig auf die Kommentare achten, diese sind noch nicht aktuell. Ich hoffe ihr könnt mir helfen.

    Mfg

    • Typ geändert Ohjit Montag, 2. Juni 2014 10:04 Falscher Threadtyp
    Montag, 2. Juni 2014 08:06