listbox selected item给我“System.Data.DataRowView”,C#winforms

我有listbox1 – 它的数据源是一列(productname)。

所以我在列表框中有一个MultiSelection选项。

我试图为我选择的所有选项创建一个MessageBox ,这个代码:

  foreach (object selectedItem in listBox1.SelectedItems) { MessageBox.Show((selectedItem.ToString() + Environment.NewLine)); } 

问题是我得到这个值而不是System.Data.DataRowView

如何填充列表框(即什么是数据源)?

从你的评论我会说一个DataView(并包含DataRowView …)

因此,您只需要将SelectedItem转换为DataRowView ,以便从此DataRowView获取值:

 foreach (object selectedItem in listBox1.SelectedItems) { DataRowView dr = (DataRowView)selectedItem; String result = dr["productname"].ToString; MessageBox.Show(result + Environment.NewLine); } 

可能属于这篇文章的VB.Net开发人员也可能对此感兴趣。

尝试改变这一点

 ListBoxItem lbi ; String myStr ; for (int i =0; i <= listbox1.selecteditems.count-1 ; i++) { lbi = (ListBoxItem)(listBox1.ItemContainerGenerator.ContainerFromIndex(i)); myStr += lbi + Environment.NewLine); } MessageBox.Show(myStr);