如何按名称查找歌曲并将其从播放列表中删除

时间:2018-05-06 23:23:51

标签: c# playlist windows-media-player wmplib

基本上我正在制作自动点唱机,而且我的WMPLib库存在很大问题 我试图从播放列表中删除一个项目,但问题是我找不到任何方法来获取索引或实际媒体的名称。
我 我正在考虑制作一个播放列表的副本数组,但那只是愚蠢的工作,那么我应该投入到这样一个简单的任务中。

 private void queue_listbox_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        if (queue_listbox.SelectedItem != null)
        {
            wplayer.currentPlaylist.removeItem('Insert code here');
            music_listbox.Items.Add(queue_listbox.SelectedItem);
            queue_listbox.Items.Remove(queue_listbox.SelectedItem);
        }
    }

1 个答案:

答案 0 :(得分:0)

只需使用Dictionary<TKey, TValue>即可:

// The string will be used as the name to find the song. 
// I don't know what type you are using for the song, 
// so I'm just using the madeup type "Song"
Dictionary<string, Song> songs = new Dictionary<string, Song>();

然后你可以通过做(伪代码)

来删除它
// Removes "Look at this Photograph" from the songs Dictionary
songs["Look at this Photograph - Nickleback"].Remove();

词典几乎就是列表,它们几乎都是数组,除了不是将数字作为索引器传递(songs[5]获得第6首歌曲),你可以传递任何类型的TKey({{ 1}}获取与该字符串配对的歌曲)。

我不知道您是否已成为songs["Look at this Photograph"]课程,或者是否由Microsoft制作。如果它已构建,那么如果Listbox已经是数组,那么Items就无法成为字典,在这种情况下,您需要获得更多创意。您可能必须基本上重新创建Listbox才能拥有Dictionary或一些聪明的解决方法。

你可以做一些事情,比如制作一个ListboxManager来保持Dictionary<Listbox, Dictionary<string, Song>>并使用一个名为GetItems(this Listbox listbox) => ListBoxManager.Listboxes[listbox];的扩展方法,它可能会起作用。