C#多选列表框选中的项目文本

时间:2012-08-23 12:53:19

标签: 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”。

我做错了什么,我尝试了一些事情似乎没有什么对我有用。

4 个答案:

答案 0 :(得分:2)

嗯,这是一个Winforms问题,因为ASP.NET ListBox没有SelectedItems属性(注意复数)。这很重要,因为Winforms ListBox没有ListItems TextValue属性,就像在ASP.NET中一样,而只是Object

您还评论说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 ListItem

答案 1 :(得分:0)

string s = lstFieldNames.SelectedItems[i].Text.ToString();

请注意Text属性

答案 2 :(得分:0)

这将获取仅选定值

修改

foreach (object listItem in listBox1.SelectedItems)
{
    string s = listItem.ToString();
}

答案 3 :(得分:0)

使用此代码:

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