C# multiple select listbox selected item text

12,672

Well, this is a Winforms question because an ASP.NET ListBox has no SelectedItems property(notice the plural). This is important since a Winforms ListBox has no ListItems with Text and Value properties like in ASP.NET, instead it's just an Object.

You've also commented that the datasource of the ListBox is an anonymous type. You cannot cast it to a strong typed object later.

So my advice is to create a class with your desired properties:

class ListItem {
    public String Item { get; set; }
}

Create instances of it instead of using an anonymous type:

var items = (from i in xDoc.Descendants("ITEM") 
             orderby i.Value 
             select new ListItem(){ Item = i.Element("FIELDNAME").Value })
            .ToList();

Now this works:

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

Note that my ListItem class is not the ASP.NET ListItem.

Share:
12,672
user1619768
Author by

user1619768

Updated on June 04, 2022

Comments

  • user1619768
    user1619768 almost 2 years

    I have a list-box, I want to loop through all the selected items and get each selected items text value.

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

    the value of s is "{ Item = ADDR }"

    I don't need the { Item = }, I just want the text "ADDR".

    What am I doing wrong, I tried a few things and nothing seems to work for me.

  • Tim Schmelter
    Tim Schmelter over 11 years
    But this is a winforms question, in ASP.NET there's a Text property in ListItem but in Winforms it's just an object. msdn.microsoft.com/en-us/library/…
  • user1619768
    user1619768 over 11 years
    I get an error when trying lstFieldNames.SelectedItems[i].Text; 'object' does not contain a definition for 'Text'
  • user1619768
    user1619768 over 11 years
    do i need to add a directive? I get the error message - The type or namespace name "ListItem" could not be found(are you missing a using directive or an assembly reference?)
  • user1619768
    user1619768 over 11 years
    nope this is not working either. I get an error - Unable to cast object of type'<>f_AnonymousType0'1[System.String]' to type 'System.String'
  • Vishal Suthar
    Vishal Suthar over 11 years
    Updated my answer..@user1619768
  • user1619768
    user1619768 over 11 years
    No error, but now i'm back to the original question. it returns "{ item = ADDR }"
  • user1619768
    user1619768 over 11 years
    Thanks a million. Once you directed me to the data source.. I seen where {Item =} was coming from. All along I thought it was the listbox i was having problems with. Thanks again.