【问题标题】:Databinding ComboBox "SelectedItem" property has incorrect initial selection数据绑定组合框“SelectedItem”属性的初始选择不正确
【发布时间】:2011-06-02 22:32:29
【问题描述】:

我正在使用 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&lt;Printer&gt;。同时,Item 是一种实现 INotifyPropertyChanged 的​​类型,归结为(它为 SelectedPrinter 属性正确实现了 INotifyPropertyChanged , 为简洁起见,此处省略):

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

问题是,当我将此 ComboBox 添加到表单并显示表单时,会自动选择可用打印机列表中的第一台打印机。我希望组合框尊重任何初始 SelectedPrinter 属性值,无论它是 null 表示没有选择,还是包含某种打印机选择。

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

【问题讨论】:

    标签: .net winforms combobox


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 2011-06-28
    • 2014-08-28
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多