【问题标题】:.NET 3.5 Listbox Selected Values (Winforms).NET 3.5 列表框选定值(Winforms)
【发布时间】:2011-02-06 04:55:05
【问题描述】:

我正在努力从启用了多选并已绑定到获取名称(作为 DisplayMember)和 ID(作为 ValueMember)的数据库表的 Winforms 列表框中获取选定的值(请注意 VALUES 不是 TEXT)-我需要所选项目的 ID。

列表框控件具有用于SelectedValue 的属性以获取选定项值之一,但不是针对所有选定项值。

SelectedItems 属性返回一个 Listbox.SelectedObjectCollection,我似乎无法从中提取项目的值。

请帮忙!谢谢。

【问题讨论】:

  • 您能否添加一些代码来显示您如何在列表框中插入项目?
  • 列表框已绑定到一个数据库表,其名称为 DisplayMember,ID 为 ValueMember

标签: c# .net-3.5 listbox multi-select selectedvalue


【解决方案1】:

元素 [0] 将是“ValueMember”,元素 [1] 将是“DisplayMember”。假设 OP 的“ID”字段是一个整数,请尝试以下操作:

int selectedCount = lstBxOb10Customer.SelectedItems.Count;
int[] selectedIDs = new int[selectedCount];
string[] selectedNames = new string[selectedCount];

for (int selected = 0; selected < selectedCount; selected++)
{
    var itemArray = ( (DataRowView)item ).Row.ItemArray;

    selectedIDs[selected]  = (int)itemArray[0];
    selectedNames[selected]  = (string)itemArray[1];
}

【讨论】:

    【解决方案2】:

    尝试将集合中的每个object 转换为所需的type。例如,如果我的项目是Customer 类型,我可以这样做......

    var selected = listBox1.SelectedItems;
    
    foreach ( var item in selected )
    {
        var singleCustomer = (Customer)item;
    }
    

    现在您可以从Customer 获取您想要的任何属性。

    这只是一个简单的例子,但我相信你可以将这个概念应用到你的问题中。

    更新(更新问题以指示列表框绑定到表之后):

    如果你绑定到DataTable,你可以尝试这样的事情(同样,微不足道但相关):

    var selected = listBox1.SelectedItems;
    
    foreach ( var item in selected )
    {
        var itemArray = ( (DataRowView)item ).Row.ItemArray;
    
        var name = itemArray[0];
        var id = itemArray[1];
    }
    

    【讨论】:

    • 这是我手动添加东西时的方式,但我不知道它如何与绑定控件一起使用。
    【解决方案3】:

    SelectedItems 是你想要的。

    SelectedItem 和 SelectedValue 仅在设置 DisplayMember 和 ValueMember 时有所不同。我认为这不支持多选。

    您要向列表框中添加什么类型的项目?

    【讨论】:

    • 抱歉,我已经更新了最初的问题 - 我已将控件绑定到名称为 DisplayMember 且 ID 为 ValueMember 的数据库表。我想获取所选项目的 ID
    • 见@Steve Dignans 的回答,你可能需要转换成 CustomerRow 什么的。
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 2011-01-04
    • 2011-05-22
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    相关资源
    最近更新 更多