好的我有疑问,我根据列表框中列出的项目制作了这个代码来播放axmediaplayer。 首先,我使用opendialog制作一个列表:
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]);
}
}
}
然后当使用此代码更改列表框索引时(当列表框中的项目为cliked时)播放音乐:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = path[listBox1.SelectedIndex];
}
它工作正常,然后我希望播放器自动移动到列表框上项目的下一首歌曲。使用事件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;
}
}
}
所选索引更改,但播放器不会自动播放下一首歌曲。我必须手动点击播放按钮才能播放列表。任何人都可以帮助我吗?
答案 0 :(得分:2)
好吧我找到了,解决方法是在播放下一首歌之前添加计时器。 首先我添加计时器,那应该是timer1。然后我将playstate事件改为这样的事情:
private void axWindowsMediaPlayer1_PlayStateChange(object sender, axWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
{
timer1.Interval = 100;
timer1.Enabled = true;
}
}
然后在定时器上添加tick事件,tick事件是这样的:
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;
}
}
现在它的工作很好^^
答案 1 :(得分:0)
以下功能对我有用:
List<WebElement> elms = driver.findElements(By.cssSelector("span.swatch"));
boolean disabled = elms.get(i).getAttribute("class").contains("disabledSwatch");