我与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
,无济于事。有什么建议么?
是的,这就是我最终做的。我按照http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/a530f011-54d9-44d1-a585-145ea28ff370/中所述添加了一个自定义组合框,然后添加了一个等于方法,现在它终于工作了。谢谢! – Pete 2011-06-03 11:40:05
@Pete:我很高兴为你工作。 – 2011-06-03 13:13:52