2013-05-27 124 views
0

我有listbox1 - 它的数据源是一列(productname)。listbox selected items给我“System.Data.DataRowView”,C#winforms

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

和IM试图让所有我所选择的选项MessageBox这个代码:

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

的问题是,即时得到这个值,而不是System.Data.DataRowView

回答

3

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

从您的意见,我会说一个数据视图(和至极包含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感兴趣。

+0

即时得到此错误: 'System.Data.DataRowView'没有包含'Item'的定义,也没有扩展方法'Item'接受类型'System.Data.DataRowView'的第一个参数可以找到(你是否缺少)使用指令或程序集引用?)“ –

+0

我正在使用system.data –

+0

查看更新的答案,这是VB C#转换的问题http://stackoverflow.com/q/7873972/2387010 – Chris

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

得到这个错误: 'selectedItem'是一个'变量',但像'方法'一样使用 –

+0

@ShmulikCohen:它已更新..尝试! – matzone