2011-06-02 34 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

相關問題