我正在使用winforms ComboBox并进行以下手动数据绑定:
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);
Printer
是一种值类型(因此?
可以在幕后制作此Nullable<Printer>
。同时,Item
是一种实现INotifyPropertyChanged并归结为({它为SelectedPrinter属性正确实现了INotifyPropertyChanged,为简洁起见我省略了这一点:
class Item
{
Printer? SelectedPrinter { get; set; }
}
问题是,当我将此ComboBox添加到表单并显示表单时,将自动选择可用打印机列表中的第一台打印机。我希望组合框能够尊重初始的SelectedPrinter属性值是什么,是否为无选择的null,或者包含某种类型的打印机选择。
我尝试在将ComboBox添加到控件层次结构之前和之后手动设置combobox.SelectedValue
,但无济于事。有什么建议吗?
答案 0 :(得分:0)
如果我理解你,你遇到的唯一问题是当所选的打印机为空时,如果所选的打印机为空,它会自动选择列表中的第一台打印机?据我所知,这是预期的行为。
您可以做的是检查所选打印机是否为空,然后将组合框的SelectedIndex设置为-1。否则,您可能必须创建一个null对象并将其播种到数据源中。