基本上我正在制作自动点唱机,而且我的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);
}
}
答案 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];
的扩展方法,它可能会起作用。