【问题标题】:listbox selected item give me " System.Data.DataRowView" , C# winforms列表框选定项给我“System.Data.DataRowView”,C# winforms
【发布时间】:2013-05-27 17:47:16
【问题描述】:

我有 listbox1 - 它的数据源是一列(产品名称)。

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

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

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

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

【问题讨论】:

    标签: c# winforms listbox


    【解决方案1】:

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

    根据您的评论,我会说一个 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 感兴趣。

    【讨论】:

    • 我收到此错误:“System.Data.DataRowView”不包含“Item”的定义,并且没有接受“System.Data.DataRowView”类型的第一个参数的扩展方法“Item”可以被发现(您是否缺少 using 指令或程序集引用?)"
    • 查看更新的答案,这是VB C#转换的问题stackoverflow.com/q/7873972/2387010
    【解决方案2】:

    试着用这个来改变

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

    【讨论】:

    • 收到此错误:“selectedItem”是一个“变量”,但用作“方法”
    猜你喜欢
    • 2023-03-27
    • 2011-05-22
    • 2011-07-09
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多