.net 数据绑定组合框“;SelectedItem";属性的初始选择不正确

.net 数据绑定组合框“;SelectedItem";属性的初始选择不正确,.net,winforms,combobox,.net,Winforms,Combobox,我正在使用winforms组合框,并有以下手动数据绑定: ComboBox c = new ComboBox () { Dock = DockStyle.Fill, DropDownStyle = ComboBoxStyle.DropDownList, DisplayMember = "Name", }; c.DataBindings.Add ("SelectedItem", item, "SelectedPrinter", true, DataSourceUpdate

我正在使用winforms组合框,并有以下手动数据绑定:

ComboBox c = new ComboBox ()
{
    Dock = DockStyle.Fill,
    DropDownStyle = ComboBoxStyle.DropDownList,
    DisplayMember = "Name",
};

c.DataBindings.Add ("SelectedItem", item, "SelectedPrinter", true, DataSourceUpdateMode.OnPropertyChanged);
c.DataSource = new List<Printer> (printers);
问题是,当我将此组合框添加到表单并显示表单时,会自动选择可用打印机列表中的第一台打印机。我希望combobox尊重初始SelectedPrinter属性值是什么,无论它是否为空表示无选择,或者包含某种类型的打印机选择


我尝试手动设置组合框。在将组合框添加到控件层次结构之前和之后,SelectedValue均无效。有什么建议吗?

如果我理解您的意思,您遇到的唯一问题是,当选定的打印机为空时,如果选定的打印机为空,它会自动选择列表中的第一台打印机?据我记忆所及,这是预期的行为


您可以做的是检查所选打印机是否为空,然后将组合框的SelectedIndex设置为-1。否则,您可能必须创建一个空对象并将其种子植入数据源。

是的,我最终就是这么做的。我添加了一个自定义组合框,如中所述,然后添加了对Equals方法的适当重写,现在它终于可以工作了。谢谢
class Item
{
    Printer? SelectedPrinter { get; set; }
}