2013-10-23 138 views
6

我有一個綁定到數據源的組合框,但它不會更新綁定,直到控件失去焦點。如何在更改所選項目時更新綁定?在下面的屏幕截圖中,我希望標籤立即更新以反映新的選擇。組合框不更新所選項目上的DataBindings更改(WinForms)

一些代碼:

public enum MyEnum 
{ 
    First, 
    Second 
} 

public class MyData 
{ 
    public String Name { get; set; } 
    public MyEnum MyEnum { get; set; } 
} 

表格樣本:

public SampleForm() 
{ 
    InitializeComponent(); 
    MyData data = new MyData() { Name = "Single Item" }; 
    this.bindingSource1.DataSource = data; 
    this.comboBox1.DataSource = Enum.GetValues (typeof (MyEnum)); 
    this.label2.DataBindings.Add ("Text", this.bindingSource1, "MyEnum", true, DataSourceUpdateMode.OnPropertyChanged); 
    this.comboBox1.DataBindings.Add (new System.Windows.Forms.Binding ("SelectedItem", this.bindingSource1, "MyEnum", true)); 
    this.comboBox1.DataBindings.Add (new System.Windows.Forms.Binding ("SelectedValue", this.bindingSource1, "MyEnum", true)); 
} 

回答

6

註釋掉的SelectedItem版本,並修改的SelectedValue綁定像這樣包括將UpdateMode:

this.comboBox1.DataBindings.Add(new Binding(
             "SelectedValue", 
             this.bindingSource1, 
             "MyEnum", 
             true, 
             DataSourceUpdateMode.OnPropertyChanged)); 
+0

這也爲我工作。謝謝。但它不會加載MyEnum的初始值。我必須手動執行此操作嗎? – ehmunnehm

+0

@ehmunnehm我不知道你的代碼是怎麼回答的。嘗試使用適當的複製代碼發佈新問題。 – LarsTech

0

LarsTech solution是正確的。你也可以做到這一點在設計模式:

  1. 組合框屬性(F4) - >數據綁定的節點 - >高級

  • 點擊「的SelectedValue」和更改數據源更新模式爲‘OnPropertyChanged’ enter image description here
  • 相關問題