You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查歌曲未被添加至播放列表?(Contains方法无法生效)

解决播放列表重复添加歌曲的问题

我来帮你搞定这个问题——你碰到的核心问题是Windows Media Player的Playlist对象根本没有内置的Contains方法,所以你原来代码里那行!customPlaylist.Contains(usersInput)肯定跑不通。另外还有个容易踩的小坑:你每次点击按钮都新建一个"Custom Playlist",这会导致之前添加的歌曲直接丢失,得先找已存在的播放列表,找不到再创建新的。

下面是修正后的完整代码,我给你拆解下关键改动:

private void btnAddToPlaylist_Click(object sender, EventArgs e)
{
    // 处理用户输入:去掉前后空格、转小写、补全后缀
    string usersInput = txtBoxSongName.Text.Trim().ToLower() + ".mp3";
    // 预设的可用歌曲列表
    List<string> songNames = new List<string> { "rock and roll.mp3", "wake up.mp3", "floating away.mp3", "inside.mp3" };

    // 第一步:先验证用户输入的歌曲是否在可用列表里
    if (!songNames.Contains(usersInput))
    {
        MessageBox.Show("The following song is not available.");
        return;
    }

    // 第二步:获取已存在的自定义播放列表,没有则新建
    IPlaylist customPlaylist = null;
    foreach (IPlaylist playlist in player.playlistCollection.getAll())
    {
        if (playlist.name.Equals("Custom Playlist", StringComparison.OrdinalIgnoreCase))
        {
            customPlaylist = playlist;
            break;
        }
    }
    if (customPlaylist == null)
    {
        customPlaylist = player.playlistCollection.newPlaylist("Custom Playlist");
    }

    // 第三步:手动检查歌曲是否已在播放列表中(替代不存在的Contains方法)
    bool isSongAlreadyAdded = false;
    foreach (IWMPMedia mediaItem in customPlaylist.items)
    {
        // 从媒体文件的源地址里提取文件名,转小写后对比
        string mediaFileName = System.IO.Path.GetFileName(mediaItem.sourceURL).ToLower();
        if (mediaFileName == usersInput)
        {
            isSongAlreadyAdded = true;
            break;
        }
    }

    // 第四步:根据检查结果执行操作
    if (!isSongAlreadyAdded)
    {
        IWMPMedia newMedia = player.newMedia(usersInput);
        customPlaylist.appendItem(newMedia);
        MessageBox.Show("Song added to playlist successfully!");
    }
    else
    {
        MessageBox.Show("This song is already in your playlist.");
    }
}

核心改进说明:

  • 修复播放列表丢失问题:不再每次点击都新建播放列表,而是先遍历播放器的播放列表集合,找到已存在的"Custom Playlist",保证之前添加的歌曲不会消失。
  • 替代Contains方法:通过遍历播放列表的items集合,提取每个媒体文件的文件名(从sourceURL里截出来),和用户输入做大小写不敏感的比对,实现歌曲存在性检查。
  • 输入健壮性优化:给用户输入加上Trim(),避免不小心输入的前后空格导致匹配失败。

这样就能完美实现你的需求:验证输入歌曲是否可用,同时防止重复添加到播放列表啦。

内容的提问来源于stack exchange,提问作者Brett Koenig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:19:39