4
votes

I have a combobox on my form (winforms). In the properties I have set the DisplayMember and the ValueMember. DisplayMember = Name and ValueMember = ID. The Combobox is populated with the following objects:

public class MyObj
    {
        public string Name
        {
            get; set;
        }

        public int ID { get; set; }
    }

The Name displays fine in the dropdown(so DisplayMember is working) however, when I do:

mycombobox.SelectedValue it is ALWAYS null.

Does anyone know if I've forgotten to do anything?

4
where did you check mycombobox.SelectedValue ? - Bolu
It's on the click event of a button. I have also tried checking it on the SelectedIndexChanged event of the combobox itself but it didn't work there either. - AndrewC
if you do SelectedIndex or SelectedItem what do you get? can you add the code of how the combobox is configured and populated? - Sebastian Piu
Try to swap ID and Name: DisplayMember = ID and ValueMember = Name and see if ID displays fine in the dropdown to make sure your datasource is fine. - Bolu
I set DisplayMember = ID and it displays the ID just fine. - AndrewC

4 Answers

4
votes

Have you set the DataSource property. Also make sure that you have to set them in the correct order -

Set them in the following order -

1. DisplayMember
2. ValueMember
3. DataSource

See this link - http://social.msdn.microsoft.com/Forums/en/winformsdatacontrols/thread/211a46f5-5971-4ea2-a61d-84e389360909

Alternatively you can use the SelectedItem property to get the selected MyObj instance.

0
votes

try SelectedItem

MyObj obj = (MyObj)mycombobox.SelectedItem;
0
votes

Has an item been selected? Selected is not always the same as visible. Perhaps you really want to mycombobox.Text.

0
votes

I have similar mistake. I set DisplayMember and ValueMember, but i set instead of DataSource Items.Insert.