【问题标题】:How to get multiple selected values from listbox C# Windows Application如何从列表框 C# Windows 应用程序中获取多个选定的值
【发布时间】:2016-11-13 02:20:39
【问题描述】:

我在我的 Windows 应用程序上使用Listbox。列表框有一个多选选项,用户可以选择新用户将拥有的所有角色。 我的列表框绑定到数据集。该表是 Roles,具有 ID 列和 Description 列。 当我绑定列表框时,我选择数据源为数据集,显示成员为描述,值成员为ID,选定值为数据集-roles.frolesid

现在,当我遍历列表框的选定项时,我只得到第一项的值等...

我正在尝试将一个 int 分配给当前选定的值,以获取要提供给用户的 ID。

 int num = 0;
 foreach (var item2 in lstRoles.SelectedItems)
 {
      num = Convert.ToInt32(lstRoles.SelectedValue);
 }

因此,如果我选择 3 个角色,例如管理员、捕获者和评估者,我只会看到管理员值。

如何循环和访问下一项?我什至没有使用

项目2 在我的代码中。这个可以用吗?

例如:

第一次迭代:

它只是停留在那个选定的项目上,永远不会移动到下一个项目。

【问题讨论】:

  • 你已经在使用它了。 “lstRoles.SelectedItems”。如果你运行迭代直到完成,你可以看到“Administrator, Assessor, Capturer”
  • 实际上并非如此。当我通过时,它停留在管理员上
  • 试试 "lstRoles.SelectedItems.Count" ,必须是 3
  • 它是 3。但它没有给我任何其他我可以使用的东西。除非我用计数做一些 if 语句?
  • lstRoles.SelectedItems[0] 是您的第一个 selectedItem,然后 lstRoles.SelectedItems[1] 是您的第二个 selectedItem,然后 lstRoles.SelectedItems[2] 是您的第三个 selectedItem

标签: c# winforms listbox selecteditem selectedvalue


【解决方案1】:

要在数据源为DataTable 时获取选定值的列表,您可以使用以下代码:

var selectedValues = listBox1.SelectedItems.Cast<DataRowView>()
                             .Select(dr => (int)(dr[listBox1.ValueMember]))
                             .ToList();

但一般而言,ListBox 控件的 Item 可能是 DataRowView、Complex Objects、Anonymous types、primary types 和其他类型。项目的基础价值应基于ValueMember 计算。

如果您正在寻找适用于不同设置和不同数据源的良好解决方案,您可能会发现this post 很有帮助。它包含一个返回项目值的扩展方法。它的工作方式类似于ListBoxGetItemText 方法。

【讨论】:

    【解决方案2】:

    解决了

                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}

    【讨论】:

    • ListBox 控件的项可以是DataRowView、复杂对象、匿名类型、主要类型和其他类型。项目的基础价值应基于ValueMember 计算。你觉得this post 很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2017-01-07
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多