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