使用WPF中的MediaElement循环播放音频

时间:2011-10-09 18:14:13

标签: wpf vb.net mediaelement

我正在开发一个带WPF的视频播放器。(在VB中)

我已经创建了一个MediaElement,ListBox,“Next”按钮,

然后开始阅读ListBox,

并使用“下一步”跳到下一个音频/视频。

在“MediaEnded”事件中,我只是复制“下一步”按钮中的所有代码。


现在,问题来了,

假设列表框有四个音频(.mp3),“test1.mp3”,“test2.mp3”,......

现在播放的是“test1.mp3”,我按下“下一步”按钮,然后现在播放的是“test2.mp3”。

然而,当我让“test1.mp3”播放完成时,我的播放器不会播放“test2.mp3”,

随机播放“test3.mp3”或其他人。

像“MediaEnded”事件这样的情况已多次处理。


Private Sub MediaElement1_MediaEnded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MediaElement1.MediaEnded

    nextmedia()

End Sub

Private Sub nextmedia()

    Try
        'pi is play index, start from 1, 0 is non playing
        If pi <> 0 Then
            If pi = ListBox_temp.Items.Count Then

                Dim filename As String = ListBox_temp.Items.Item(0).ToString
                MediaElement1.Source = New Uri(filename)
                pi = 1

            Else

                Dim filename As String = ListBox_temp.Items.Item(pi).ToString
                MediaElement1.Source = New Uri(filename)
                pi = pi + 1

            End If
        End If

    Catch ex As Exception

    End Try
    Window1.Title = "Video Sampler - " + CStr(pi) + ". " + CStr(ListBox1.Items.Item(pi - 1))
End Sub

谁能帮助我......

1 个答案:

答案 0 :(得分:0)

我没有测试过,但请尝试以下方法。

Try 
    pi = If(pi < ListBox_temp.Items.Count - 1, pi + 1, 0)
    Dim filename As String = ListBox_temp.Items.Item(pi).ToString 
    MediaElement1.Source = New Uri(filename) 
Catch ex As Exception
End Try

除非选择了最后一个pi,否则此增加ListBoxItem,在这种情况下,它会将其设置为零。