2011-06-02 40 views
0

我与WinForms的组合框工作,并具有以下的手动绑定:数据绑定组合框“的SelectedItem”属性有不正确的初始选择

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,并归结为一个类型(其正确实现INotifyPropertyChanged为SelectedPrinter财产,我在这里省略为简洁起见):

class Item 
{ 
    Printer? SelectedPrinter { get; set; } 
} 

问题是,当我将此ComboBox添加到窗体并显示窗体时,将自动选择可用打印机列表中的第一台打印机。我希望组合框尊重,不管最初的SelectedPrinter属性值是否为空,无需选择,或者包​​含某种打印机选择。

我试图在ComboBox被添加到控制层次之前和之后手动设置combobox.SelectedValue,无济于事。有什么建议么?

回答

0

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

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

+1

是的,这就是我最终做的。我按照http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/a530f011-54d9-44d1-a585-145ea28ff370/中所述添加了一个自定义组合框,然后添加了一个等于方法,现在它终于工作了。谢谢! – Pete 2011-06-03 11:40:05

+0

@Pete:我很高兴为你工作。 – 2011-06-03 13:13:52

相关问题