数据绑定ComboBox“SelectedItem”属性具有不正确的初始选择

时间:2011-06-02 22:32:30

标签: .net winforms combobox

我正在使用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,但无济于事。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果我理解你,你遇到的唯一问题是当所选的打印机为空时,如果所选的打印机为空,它会自动选择列表中的第一台打印机?据我所知,这是预期的行为。

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