【问题标题】:ComboBox not updating DataBindings on selected item changed (WinForms)ComboBox 未更新所选项目上的 DataBindings 已更改(WinForms)
【发布时间】:2013-10-23 21:46:30
【问题描述】:

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

一些代码:

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

【问题讨论】:

    标签: c# winforms data-binding


    【解决方案1】:

    注释掉 SelectedItem 版本,并像这样修改 SelectedValue 绑定以包含 UpdateMode:

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

    【讨论】:

    • 这对我也有用。谢谢。但它不会加载 MyEnum 的初始值。我必须手动执行此操作吗?
    • @ehmunnehm 我不知道您的代码如何回答这个问题。尝试使用正确的复制代码发布新问题。
    【解决方案2】:

    LarsTech solution 是正确的。您也可以在设计模式下进行:

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

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

    【讨论】:

      猜你喜欢
      • 2016-10-02
      • 2015-11-12
      • 2011-01-14
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多