Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET 3.5列表框选定值(Winforms)_C#_.net 3.5_Listbox_Multi Select_Selectedvalue - Fatal编程技术网

C# .NET 3.5列表框选定值(Winforms)

C# .NET 3.5列表框选定值(Winforms),c#,.net-3.5,listbox,multi-select,selectedvalue,C#,.net 3.5,Listbox,Multi Select,Selectedvalue,我正在努力从Winforms列表框中获取所选值(请注意,值不是文本),该列表框已启用多选功能,并已绑定到数据库表,获取名称(作为DisplayMember)和ID(作为ValueMember)-我需要所选项目的ID listbox控件具有用于SelectedValue的属性,用于获取一个选定项值,但不用于所有选定项值 SelectedItems属性返回一个列表框。SelectedObjectCollection似乎无法从中提取项目的值 请帮忙!谢谢。选择编辑您想要的内容 SelectedItem

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

listbox控件具有用于
SelectedValue
的属性,用于获取一个选定项值,但不用于所有选定项值

SelectedItems
属性返回一个
列表框。SelectedObjectCollection
似乎无法从中提取项目的值


请帮忙!谢谢。

选择编辑您想要的内容

SelectedItem和SelectedValue仅在设置DisplayMember和ValueMember时不同。我认为Multi-select不支持此功能


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

尝试将集合中的每个
对象
强制转换为所需的
类型
。例如,如果我的商品类型为
客户
,我可以这样做

var selected = listBox1.SelectedItems;

foreach ( var item in selected )
{
    var singleCustomer = (Customer)item;
}
现在,您可以从
客户
处获得所需的任何属性

这只是一个微不足道的例子,但我相信您可以将这个概念应用到您的问题中

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

如果您绑定到一个
数据表
,您可以尝试类似的方法(同样,虽然很简单,但也很相关):


元素[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];
}
int-selectedCount=lstBxOb10Customer.SelectedItems.Count;
int[]selectedds=newint[selectedCount];
string[]selectedNames=新字符串[selectedCount];
对于(int selected=0;selected
能否添加一些代码来显示如何在列表框中插入项目?列表框已绑定到一个数据库表,名称为DisplayMember,ID为ValueMember抱歉,我已更新了初始问题-我已将控件绑定到一个数据库表,名称为DisplayMember,ID为ValueMember。我想获取所选项目IDSEE@Steve Dignans答案,您可能需要强制转换到CustomerRow或其他内容。这是我手动添加内容时的方式,但我不知道它如何与绑定控件一起工作。
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];
}