列表框选中的项目给我“System.Data.DataRowView”,C#winforms

时间:2013-05-27 17:47:16

标签: c# winforms listbox

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

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

我试图为我选择的所有选项创建MessageBox,然后是代码:

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

问题在于我获取此值而不是System.Data.DataRowView

2 个答案:

答案 0 :(得分:3)

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

从你的评论中我会说一个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开发人员也可能对this感兴趣。

答案 1 :(得分:-1)

尝试使用此更改

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