Как найти песню по названию и удалить ее из плейлиста - PullRequest
0 голосов
/ 07 мая 2018

В основном я делаю музыкальный автомат, и у меня большая проблема с библиотекой WMPLib.
Я пытаюсь удалить элемент из списка воспроизведения, но проблема в том, что я не могу найти способ получить индекс или фактический носитель по имени.
I думал о создании массива реплик из списка воспроизведения, но это просто глупо больше работы, чем то, что я должен поставить в простую задачу, подобную этой.

 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 голосов
/ 07 мая 2018

Просто используйте 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 (songs["Look at this Photograph"] получает песню это в паре с этой строкой).

Я не знаю, создал ли вы этот класс Listbox или он создан Microsoft. Если он построен, то Items нельзя сделать словарем, если это уже массив, в этом случае вам нужно проявить больше творчества. Возможно, вам придется воссоздать Listbox, чтобы получить Dictionary или какой-нибудь умный обходной путь.

Вы можете сделать что-то вроде создания ListboxManager, который будет содержать Dictionary<Listbox, Dictionary<string, Song>>, и использовать метод расширения под названием GetItems(this Listbox listbox) => ListBoxManager.Listboxes[listbox];, который, вероятно, будет работать.

...