C# 如何使用axmediaplayer播放播放列表中的下一项?
好的,我有一个问题,我做了这个代码来根据列表框中列出的项目来播放axmediaplayer。 首先,我使用opendialog生成一个列表:C# 如何使用axmediaplayer播放播放列表中的下一项?,c#,axwindowsmediaplayer,C#,Axwindowsmediaplayer,好的,我有一个问题,我做了这个代码来根据列表框中列出的项目来播放axmediaplayer。 首先,我使用opendialog生成一个列表: private string[] files, path; private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
private string[] files, path;
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
files = openFileDialog1.SafeFileNames;
path = openFileDialog1.FileNames;
for (int i = 0; i < files.Length; i++) {
listBox1.Items.Add(files[i]);
}
}
}
它工作正常,然后我希望播放器根据我列表框中的项目自动移动到下一首歌曲。通过使用events PlayStateChange,我编写了以下代码
private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
{
if(listBox1.SelectedIndex < files.Length - 1)
{
listBox1.SelectedIndex = listBox1.SelectedIndex + 1;
}
}
}
private void axWindowsMediaPlayer1\u PlayStateChange(对象发送方,AxWMPLib.\u WMPOCXEvents\u PlayStateChangeEvent e)
{
如果(axWindowsMediaPlayer1.playState==WMPLib.WMPPlayState.wmppsMediaEnded)
{
if(listBox1.SelectedIndex
选定的索引会更改,但播放机不会自动播放下一首歌曲。我必须手动单击播放按钮才能播放列表。有人能帮我起床吗?好的,我找到了,解决办法是在播放下一首歌之前添加计时器。 首先我添加定时器,应该是timer1。然后我将playstate事件更改为如下内容:
private void axWindowsMediaPlayer1_PlayStateChange(object sender, axWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
{
timer1.Interval = 100;
timer1.Enabled = true;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
if (listBox1.SelectedIndex < files.Length - 1)
{
listBox1.SelectedIndex++;
timer1.Enabled = false;
}
else
{
listBox1.SelectedIndex = 0;
timer1.Enabled = false;
}
}
然后在计时器i上添加勾号事件,勾号事件如下所示:
private void axWindowsMediaPlayer1_PlayStateChange(object sender, axWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
{
timer1.Interval = 100;
timer1.Enabled = true;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
if (listBox1.SelectedIndex < files.Length - 1)
{
listBox1.SelectedIndex++;
timer1.Enabled = false;
}
else
{
listBox1.SelectedIndex = 0;
timer1.Enabled = false;
}
}
private void timer1\u勾选(对象发送方,事件参数e)
{
if(listBox1.SelectedIndex
现在它的工作很好^ ^下面的功能对我很有用:
private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
if ((WMPLib.WMPPlayState)e.newState == WMPLib.WMPPlayState.wmppsMediaEnded)
{
timer1.Interval = 100;
timer1.Start();
timer1.Enabled = true;
timer1.Tick += timer1_Tick;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
/// method to play video list items
myFuntiontoPlayVideo();
timer1.Enabled = false;
}
列表框中的何处是您正在选择的项目。。?您必须从多少个URL中选择。。如果单击列表中的最后一个URL会发生什么情况。。你有错误吗。。?如果您正在检查e.newState,是否还可以获取e.SelectedItem,它的索引列表框1.SelectedIndex=e.SelectedIndex@Scott-thx对于您的应用程序,我使用opendialog获取listbox项,然后将结果转换为数组路径(也许我还必须编写如何获取listbox?)。是的,当最后一张名单被选中时,它崩溃了,我知道这是因为当你点击最后一张名单+1时,你没有什么可玩的。我不知道你最后一个问题的意思是什么,只需修复最后一个代码,现在列表命中最后一项时不会崩溃。我发现,当我检查if语句时,我使用mbox检查语句是否触发(我将mbox放在listBox1.SelectedIndex=listBox1.SelectedIndex+1;下),因此如果语句触发,我的mbox将弹出。当这首歌结束时,它会弹出,然后发生了一些事情,下一首歌按照我的意愿播放,但当我关闭mbox时,它又停止了。奇怪-你确定没有任何其他事件会触发某些东西吗。。此外,您的媒体代码中是否有MediaPlayer的任何设置,这些设置可用于诸如随机播放、随机播放、预览或确定是否有其他事件暂停媒体播放器的设置??