C# 组合框未更新选定项上的数据绑定已更改(WinForms)

C# 组合框未更新选定项上的数据绑定已更改(WinForms),c#,winforms,data-binding,C#,Winforms,Data Binding,我有一个绑定到数据源的组合框,但在控件失去焦点之前,它不会更新绑定。当所选项目更改时,如何获取要更新的绑定?在下面的屏幕截图中,我希望标签立即更新以反映新的选择 一些代码: public enum MyEnum { First, Second } public class MyData { public String Name { get; set; } public MyEnum MyEnum { get; set; } } 样本表格: public SampleFo

我有一个绑定到数据源的组合框,但在控件失去焦点之前,它不会更新绑定。当所选项目更改时,如何获取要更新的绑定?在下面的屏幕截图中,我希望标签立即更新以反映新的选择

一些代码:

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));
}

注释掉SelectedItem版本,并修改SelectedValue绑定,如下所示,以包括UpdateMode:

this.comboBox1.DataBindings.Add(new Binding(
                                      "SelectedValue",
                                      this.bindingSource1,
                                      "MyEnum",
                                      true,
                                      DataSourceUpdateMode.OnPropertyChanged));
这是正确的。也可以在设计模式下执行此操作:

  • 组合框属性(F4)->数据绑定节点->高级

  • 单击“SelectedValue”并将数据源更新模式更改为“OnPropertyChanged”

  • 这对我也有用。谢谢但它不加载MyEnum的初始值。我必须手动完成吗?@ehmunnehm我不知道你的代码是什么样子来回答这个问题的。试着用正确的复制代码发布一个新问题。