c# - 仅选择组合框字符串的一部分或每个索引可能存储两个值?
问题描述
这是我到目前为止所拥有的:
我有一个 ComboBox,我通过从 C# Spotify API 中提取一些播放列表来填充它。我从播放列表对象中playlist.Id
获取值。playlist.Name
每个播放列表都将其 Id 和 Name 填充到我的 ComboBox 下拉列表中的一行中,以便用户可以看到他们个人播放列表的列表。
接下来,用户在 ComboBox 中选择他们选择的播放列表,并可以拉出所有曲目(艺术家等)的 ListView。
此步骤需要选择用户的 ComboBox 选择,但我只能使用该playlist.Id
值。但是,我需要在框中包含 playlist.Name,以便用户知道要选择的播放列表。
显然,这是从选定的 ComboBox 选项中提取名称和 ID,我不能将这两个值用于轨道列表拉取。我只想要 Id 字符串。
有没有办法只选择 ComboBox 字符串的一部分(只是 ID)或分别为我的 ComboBox 中的一行分配一个值和一个文本?
欣赏我可能这样做很愚蠢。
我也试过:
仅使用播放列表 ID 创建一个单独的数组,并尝试使用 ComboBox 的选定索引与数组索引匹配(仅包含 id 而不是名称)。
userPlaylists.Items.ForEach(playlist =>
{
playlistArray[i] = playlist.Id;
comboPlaylists.Items.Add(playlist.Name + playlist.Id);
i++;
});
解决方案
有一些方法可以提取 ComboBox 文本的一部分,但这不是正确的方法。相反,您应该使用数据绑定。设置 ComboBox 的DataSource
、DisplayMember
和ValueMember
属性,以便您以后可以访问SelectedValue
ID。
这是一个例子:
comboPlaylists.DisplayMember = "Name";
comboPlaylists.ValueMember = "Id";
// I'm assuming that `userPlaylists.Items` is a generic list.
// Otherwise, you might want to use `userPlaylists.Items.ToList()` instead.
comboPlaylists.DataSource = userPlaylists.Items;
现在,当您想要获取所选 PlayList 的 Id 时,可以使用如下内容:
var id = (int)comboPlaylists.SelectedValue; // Assuming the ID is an integer.
推荐阅读
- android - 在 Android 项目中使用 Kotlin + progurad 时出现 ClassCastException
- python - 了解 pandas 合并中的“left_index”和“right_index”参数
- javascript - Laravel ajax 无法正常运行
- python - 合并列具有默认值和覆盖的数据框
- python - 如何格式化 scikit-learn 输出数据?
- javascript - TypeScript 推理无法正常工作
- google-chrome - 无法在谷歌浏览器中启用 Javascript
- docker - Gitlab DOCKER_AUTH_CONFIG 不起作用
- ruby-on-rails - 在表单中附加文件会导致 InvalidAuthenticityToken 错误和 UnknownFormat 错误
- asp.net - 在 asp.net 上制作表格