如何从列表框 C# Windows 应用程序中获取多个选定值
How to get multiple selected values from listbox C# Windows Application
我在 windows 应用程序中使用 Listbox
。列表框有一个多 selection 选项,用户 select 新用户将拥有的所有角色。
我的列表框绑定到数据集。 table 是 Roles,有 ID 列和 Description 列。
当我绑定列表框时,我选择数据源是数据集,显示成员是描述,值成员是ID,selected值是数据集-roles.frolesid
现在当我遍历列表框的 selecteditems 时,我只得到第一个项目的值等等...
我正在尝试为当前 selectedvalue 分配一个整数,以获取要提供给用户的 ID。
int num = 0;
foreach (var item2 in lstRoles.SelectedItems)
{
num = Convert.ToInt32(lstRoles.SelectedValue);
}
所以如果我 select 3 个角色,例如 Administrator、Capturer 和 Assessor,我只能看到 Administrator 值。
如何循环访问下一个项目?我什至没有使用
item2
in my code. Could this be utilised?
例如:
第一次迭代:
它只停留在那个 selected 项目上,永远不会移动到下一个项目。
解决了
int num = 0;
int count = fRoleIDs.Count;
while (num != count)
{
var item = lstRoles.Items[num] as System.Data.DataRowView;
int id = Convert.ToInt32(item.Row.ItemArray[0]);
num += 1;
}
这将进入列表框的项目并根据索引将项目作为行获取。然后这让我得到了 itemarray,它是 ID 和描述 {0,1}
要在数据源为 DataTable
时获取所选值的列表,您可以使用此代码:
var selectedValues = listBox1.SelectedItems.Cast<DataRowView>()
.Select(dr => (int)(dr[listBox1.ValueMember]))
.ToList();
但通常 ListBox
控件的项目可能是 DataRowView
、复杂对象、匿名类型、主要类型和其他类型。项目的基础价值应根据 ValueMember
计算。
如果您正在寻找适用于不同设置和不同数据源的良好解决方案,您可能会发现 this post 很有帮助。它包含一个扩展方法,其中 returns 项的值。它的工作原理类似于 ListBox
的 GetItemText
方法。
我在 windows 应用程序中使用 Listbox
。列表框有一个多 selection 选项,用户 select 新用户将拥有的所有角色。
我的列表框绑定到数据集。 table 是 Roles,有 ID 列和 Description 列。
当我绑定列表框时,我选择数据源是数据集,显示成员是描述,值成员是ID,selected值是数据集-roles.frolesid
现在当我遍历列表框的 selecteditems 时,我只得到第一个项目的值等等...
我正在尝试为当前 selectedvalue 分配一个整数,以获取要提供给用户的 ID。
int num = 0;
foreach (var item2 in lstRoles.SelectedItems)
{
num = Convert.ToInt32(lstRoles.SelectedValue);
}
所以如果我 select 3 个角色,例如 Administrator、Capturer 和 Assessor,我只能看到 Administrator 值。
如何循环访问下一个项目?我什至没有使用
item2 in my code. Could this be utilised?
例如:
第一次迭代:
它只停留在那个 selected 项目上,永远不会移动到下一个项目。
解决了
int num = 0;
int count = fRoleIDs.Count;
while (num != count)
{
var item = lstRoles.Items[num] as System.Data.DataRowView;
int id = Convert.ToInt32(item.Row.ItemArray[0]);
num += 1;
}
这将进入列表框的项目并根据索引将项目作为行获取。然后这让我得到了 itemarray,它是 ID 和描述 {0,1}
要在数据源为 DataTable
时获取所选值的列表,您可以使用此代码:
var selectedValues = listBox1.SelectedItems.Cast<DataRowView>()
.Select(dr => (int)(dr[listBox1.ValueMember]))
.ToList();
但通常 ListBox
控件的项目可能是 DataRowView
、复杂对象、匿名类型、主要类型和其他类型。项目的基础价值应根据 ValueMember
计算。
如果您正在寻找适用于不同设置和不同数据源的良好解决方案,您可能会发现 this post 很有帮助。它包含一个扩展方法,其中 returns 项的值。它的工作原理类似于 ListBox
的 GetItemText
方法。