C# Set combo item with selectedValue
c#, combobox, winforms
Solution
Solution:
The SelectedValue, SelectedIndex, SelectedItem properties can't be set until the control is added to the form. After the control is added to the form, the selectedValue, -Index and -Item properties can be set.
Problem
I am dynamically creating a combobox like this: ``` public Control GenerateList(Question question) { // Get a list with answer possibilities List<QuestionAnswer> answers = question.GetAnswers(); // Get a collection of given answers Collection<QuestionnaireAnswer> givenAnswers = question.GetFilledAnswers(); ComboBox cmb = new ComboBox(); cmb.Name = "cmb"; cmb.DataSource = answers; cmb.DisplayMember = "Answer"; cmb.ValueMember = "Id"; // Check an answer is given to the question if (givenAnswers != null && givenAnswers.Count > 0) { cmb.SelectedValue = givenAnswers[0].AnswerId; } cmb.DropDownStyle = ComboBoxStyle.DropDownList; cmb.SelectedIndexChanged += new EventHandler(cmb_SelectedIndexChanged); cmb.Leave += new EventHandler(cmb_Leave); return cmb; } ``` The problem is,when executing `cmb.SelectedValue = givenAnswers[0].AnswerId;` cmb.SelectedValue is always null. When debugging and I explore `answers` (the datasource) I see that Id (ValueMember) is exactle the same as AnswerId (in the if statement). Both have the same type (long) and the same value, but SelectedValue stays null. Is there something I don't see? EDIT: It looks like the combobox stays empty. When I replace `cmb.SelectedValue = givenAnswers[0].AnswerId;` with `cmb.SelectedIndex = 0;` I get an ArgumentOutOfRangeException. This while the answers collections count is 2. So the datasource isn't null... Very strenge huh? Solution: The SelectedValue, SelectedIndex, SelectedItem properties can't be set until the control is added to the form. After the control is added to the form, the selectedValue, -Index and -Item properties can be set.