2015-06-21 90 views
0

我想突出显示当前在列表框中播放的歌曲。
我收到播放列表的当前项目。
但它没有被选中,因为索引总是-1。突出显示列表框中的特定字符串

public void _open_Click_1(object sender, EventArgs e) 
{ 
    _playList.Items.Clear(); 
    string[] filenames = { }; 
    _openFile.Multiselect = true; 
    _openFile.ShowDialog(); 
    var l1 = _playa.playlistCollection.newPlaylist("PlayList"); 
    foreach (var name in _openFile.FileNames) 
    { 
     _playList.Items.AddRange(_openFile.FileNames.ToArray()); 

    } 

    _playListJob(); 
    string curItem = _playa.Ctlcontrols.currentItem.getItemInfo("Name"); 
    int index1 = _playList.FindString(curItem); 
    if (index1 != -1) 
     _playList.SetSelected(index1, true); 
} 

任何人都可以帮助我了解我错过了什么吗?

+0

确定'curItem'具有正确的价值? – venerik

+0

欢迎来到Stack Overflow。请在句子开头使用大写字母,并在句尾加上句号。发布前请检查预览。如果在换行符之前输入两个空格或在其之后输入空行,编辑器中的换行符只会导致显示文本中出现换行符。 –

回答

0

如何:

index1=_playList.Items.IndexOf(curItem); 
    if(index1 >= 0) 
    { 
    _playList.SetSelected(index1, true); 
    } 
+0

我以前试过,索引总是-1因为某种原因,任何想法为什么? –

+0

然后您需要检查播放列表中的项目,确保项目已正确添加。 curItem的价值是什么。设置一个断点,检查它现在突出显示的值 – dshun

+0

,但是我必须在indexOf部分之后添加index1 = 0。一个问题,虽然当mediaplayer改变歌曲它不标记当前名称 –

0

上述解决方案肯定能行。这仅仅是一个问题,如果您已将文件名称正确

  public Form1() 
    { 
     InitializeComponent(); 
     AddItems(); 
    } 

    public void AddItems() 
    { 
     listBox1.Items.Clear(); 
     string[] filenames = new[] { "music a", "music b" }; 

     listBox1.Items.AddRange(filenames); 
    } 

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string curItem = "music a"; 
     int index1 = listBox1.Items.IndexOf(curItem); 
     if (index1 != -1) 
     { 
      MessageBox.Show(curItem); 
     } 

    } 

enter image description here

+0

以及不工作,基本上与第一个答案相同我的问题是,我试图让它如此当一首歌曲发挥并行名称显示在列表框中将突出显示 –