过去几天我一直在使用C#中的NAudio在基于ListView的音乐播放器上工作。现在是我开始研究前进/上一个功能的时候了,但是我在路上遇到了一些障碍。我需要选择listView中的下一个项目。但是,它不是由用户选择的,而是通过默认的ListView复选框旁边的复选标记标记为正在播放。
这就是它的样子:
我有一个可以被任何东西访问的公共字符串;它具有当前播放曲目的文件名。每当我点击播放曲目时,我都会有一个foreach循环遍历此listView中的所有项目(我在另一个标签中有第二个列表视图,其中包含我点击播放的所有音乐)如果文件名subitem和currentPlaying字符串匹配,则检查它。如果没有,则取消选中。
我的主类中有一个事件处理程序,用于播放在轨道上停止的时间。将要进入下一首曲目的逻辑是什么。我已经大致了解该怎么做,但我不确定如何去做
那么这样做的方法是什么?我还是对listViews等感到困惑。
更新另外,如何禁用用户选中复选框,我是否可以在双击时将其删除但是用户何时该怎么做?检查复选框本身?
更新2:以下是我正在处理的一些临时代码的事件处理程序
public void waveOutDevice_PlaybackStopped(object sender, StoppedEventArgs e)
{
string fileName;
foreach (ListViewItem lvi in playListView.Items)
{
fileName = lvi.SubItems[1].Text;
if(lvi.Checked == true)
{
int finIndex;
lvi.Checked = false;
finIndex = lvi.Index;
//finIndex + 1;
}
}
}
答案 0 :(得分:1)
我认为你就是在那里。所有你需要做的就是这样:
public void waveOutDevice_PlaybackStopped(object sender, StoppedEventArgs e)
{
string fileName;
foreach (ListViewItem lvi in playListView.Items)
{
fileName = lvi.SubItems[1].Text;
if(lvi.Checked == true)
{
int finIndex;
lvi.Checked = false;
finIndex = lvi.Index;
finIndex++;
if(finIndex < playListView.Count())
{
var nextGuy = playListView.Items[finIndex];
nextGuy.Checked = true;
//Play the file and what not.
}
}
}
}