C# C多选列表框所选项目文本

C# C多选列表框所选项目文本,c#,winforms,visual-studio-2010,listbox-control,C#,Winforms,Visual Studio 2010,Listbox Control,我有一个列表框,我想循环所有选定的项目,并获得每个选定项目的文本值 for (int i = 0; i < lstFieldNames.selectedItems.Count; i++) { string s = lstFieldNames.SelectedItems[i].ToString(); } s的值为{Item=ADDR} 我不需要{Item=},我只需要文本ADDR 我做错了什么,我尝试了一些事情,但似乎什么都不管用 string s = lstFieldNames.Sele

我有一个列表框,我想循环所有选定的项目,并获得每个选定项目的文本值

for (int i = 0; i < lstFieldNames.selectedItems.Count; i++)
{
string s = lstFieldNames.SelectedItems[i].ToString();
}
s的值为{Item=ADDR}

我不需要{Item=},我只需要文本ADDR

我做错了什么,我尝试了一些事情,但似乎什么都不管用

string s = lstFieldNames.SelectedItems[i].Text.ToString();
注意文本属性

这将仅获取选定的值

编辑:

使用此代码:

  string s = "";

  foreach(var item in lstFieldNames.SelectedItems) 
  {
     s += item.ToString() + ",";
  }

  textBox1.Text = s;
如果需要从列表框中选择一个项目,请尝试以下方法:

  string s = "";

  foreach(var item in lstFieldNames.SelectedItems) 
  {
     s = item.ToString();
  }
编辑:

试试这个代码

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string s = "";

        foreach (var item in listBox1.SelectedItems)
        {
            s += item.ToString() + ",";
        }

        textBox1.Text = s;
    }
这是一个Winforms问题,因为ASP.NET列表框没有SelectedItems属性通知复数形式。这一点很重要,因为Winforms ListBox没有像ASP.NET中那样具有文本和值属性的ListItems,而是一个对象

您还注意到ListBox的数据源是匿名类型。以后不能将其强制转换为强类型对象

因此,我的建议是创建一个具有所需属性的类:

class ListItem {
    public String Item { get; set; }
}
创建其实例,而不是使用匿名类型:

var items = (from i in xDoc.Descendants("ITEM") 
             orderby i.Value 
             select new ListItem(){ Item = i.Element("FIELDNAME").Value })
            .ToList();
现在,这项工作:

foreach (ListItem i in lstFieldNames.SelectedItems)
{
    String item = i.Item;   
}

请注意,我的ListItem类不是ASP.NET。

但这是一个winforms问题,在ASP.NET中ListItem中有一个文本属性,但在winforms中它只是一个对象。尝试lstFieldNames时出错。SelectedItems[I].Text;'“对象”不包含“文本”的定义ListBox的数据源是什么?var items=from i in xDoc.genderantsitem orderby i.Value选择new{Item=i.ElementFIELDNAME.Value}.ToList;l、 数据源=项目;l、 DisplayMember=Item这只是因为items的数据类型在动态创建时没有ToString覆盖。有两个主要选项AFAICS-1,而不是使用var items,创建一个holding类并将元素或集合作为一个整体传递给新类,在上面的循环中使用所需的ToString override-2,通过将所选项目元素传递给返回项目字符串而不是ToString的函数,对其进行后期处理。是否需要添加指令?我收到错误消息-找不到类型或命名空间名称ListItem是否缺少using指令或程序集引用?更新了我的答案..@user1619768nope这也不起作用。我遇到一个错误-无法将'f_AnonymousType0'1[System.String]'类型的对象强制转换为'System.String'类型没有错误,但现在我回到了原来的问题。它返回{item=ADDR}非常感谢。一旦你告诉我数据源。。我看到了{Item=}的来源。一直以来,我都认为这是我遇到问题的列表框。再次感谢。
foreach (ListItem i in lstFieldNames.SelectedItems)
{
    String item = i.Item;   
}