我正在制作一个简单的 C# WPF 视频播放器应用。
我有 2 个 Windows:MainWindow(父窗口)包含用于显示视频的 MediaElement。 PlaylistWindow(子窗口)是包含一个 ListBox 的窗口,该 ListBox 显示 appRoot 路径中的所有 .avi 文件。
目前,当我双击一个 ListBox 项目时,它会在 MainWindow 中播放该视频。我想要一个自动播放功能,以便在当前视频结束时自动播放列表中的下一个项目。
我希望 PlaylistWindow 监听由 MainWindow 中的 MediaElement 触发的 MediaEnded 事件,这样我就可以在 PlaylistWindow 中的 ListBox 上执行一些操作。
如何从 PlaylistWindow 订阅 MediaEnded 事件?
编辑添加: 我最终使用了一种不同的方法,如下所示。 我认为这不是最好的方法,但它对我有用。
public partial class MainWindow : Window
{
PlaylistWindow PLWindow = new PlaylistWindow();
public MainWindow()
{
InitializeComponent();
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
PLWindow.Owner = this;
PLWindow.Show();
}
private void videoWindow_Ended(object sender, EventArgs e)
{
PLWindow.playNext();
}
}
public partial class PlaylistWindow : Window
{
public void playNext()
{
if (playListBox.SelectedIndex < playListBox.Items.Count - 1)
{
playListBox.SelectedIndex = playListBox.SelectedIndex + 1;
}
else { playListBox.SelectedIndex = 0; }
(Owner as MainWindow).playVideo(playListBox.SelectedValue.ToString());
}
}
如果可以发布代码示例,我仍然愿意学习如何在 PlaylistWindow 中监听 MediaEnded 事件。
最佳答案
从主窗口引发自定义 .net 事件(该自定义事件将由媒体结束事件引发)并在播放列表窗口中订阅它,在该事件的事件处理程序中返回下一个 .avi 文件的文件名
关于c# - 在另一个窗口中监听 MediaEnded 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9596118/