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);