C#使用selectedValue设置组合项

Mar*_*ijn 8 c# combobox winforms

我正在动态创建一个这样的组合框:

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;
}
Run Code Online (Sandbox Code Playgroud)

问题是,当执行cmb.SelectedValue = givenAnswers[0].AnswerId;cmb.SelectedValue时总是为null.

在调试和浏览answers(数据源)时,我看到Id(ValueMember)与AnswerId(在if语句中)完全相同.两者都具有相同的类型(长)和相同的值,但SelectedValue保持为null.

有没有我看不到的东西?

编辑:

看起来组合框保持空白.当我用我替换时cmb.SelectedValue = givenAnswers[0].AnswerId;,cmb.SelectedIndex = 0;我得到一个ArgumentOutOfRangeException.这个答案集合数是2.所以数据源不是空的......非常好吗?

解:

在将控件添加到表单之前,无法设置SelectedValue,SelectedIndex,SelectedItem属性.将控件添加到表单后,可以设置selectedValue,-Index和-Item属性.

Mar*_*ijn 8

解:

在将控件添加到表单之前,无法设置SelectedValue,SelectedIndex,SelectedItem属性.将控件添加到表单后,可以设置selectedValue,-Index和-Item属性.