【问题标题】:CurrentItemChanged not raisedCurrentItemChanged 未引发
【发布时间】:2013-03-06 06:54:11
【问题描述】:

这是最简单的场景。我有一个带有几个 TextBoxes 和一个 BindingSource 的 Form,绑定到 DataSet 实例,TextBoxes 绑定到 BindingSource。在这些文本框中输入文本不会在我的 BindingSource 上引发 CurrentItemChanged 事件;即使我将焦点更改为另一个文本框。它仅在我移至另一条记录时触发,这是人们对CurrentChanged 的期望。根据MSDN

引发 CurrentItemChanged 事件是为了响应引发 CurrentChanged 事件的所有情况。此外,只要 Current 的某个属性的值发生更改,也会触发 CurrentItemChanged。

请注意,我不想调用 EndEdit(),因为这会提交我的更改。

编辑

这是我的绑定代码。现在我也添加了OnPropertyChanged,但没有任何运气。

Me.bsCatItems.DataMember = "catalog_items"
Me.bsCatItems.DataSource = Me.DsInventory
Me.bsItems.DataSource = Me.bsCatItems
Me.bsItems.DataMember = "FK_CatalogItems_Items"
Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.bsItems, "consignment_count", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged))

【问题讨论】:

  • 你在哪里设置Me.bsCatItems.DataSource
  • 见上文。所有这些代码都来自 .Designer.vb 文件。 DsInventory 是我的 DataSet 的一个对象。
  • bsItems.CurrentItemChanged(也是绑定源?)没有触发然后你在文本框中输入?
  • 没错。是的,这两个对象(bsCatItems 和 bsItems)都是 BindingSource。

标签: .net vb.net winforms ado.net bindingsource


【解决方案1】:

我不确定这在 winforms 中是如何工作的,但在 wpf 中,您可以将绑定的 updatesourcetrigger 设置为属性更改。如果设置了此项,则每次您在文本框中输入内容时,都会触发 propertychanged-event。

我很确定 winforms 中有一个平等的机制。

【讨论】:

    【解决方案2】:

    您正在寻找DataSourceUpdateMode.OnPropertyChanged 在窗体上绑定控件时,默认为OnValidation

    您必须将其更改为OnPropertyChanged,以便每次用户在控件中键入值时更新

    this.MyTextbox.DataBindings.Add(new Binding("Text", this.bindingSource, "fieldName", true, DataSourceUpdateMode.OnPropertyChanged));
    

    您也可以从设计器中完成(如果您使用 VisualStudio)

    【讨论】:

    • 一瞬间我以为这就是答案。我的幸福并没有持续多久。
    • 嗯,我可以发誓这是答案。尝试发布代码,在那里你设置BindingSource.DataSource 和绑定源用于绑定到控件的位置
    • 您好,您找到解决方案了吗.. DataSourceUpdateMode.OnPropertyChanged).. 对于对文本框进行的任何编辑,我会处理哪些事件。
    【解决方案3】:

    您必须实现INotifyPropertyChanged 接口才能引发CurrentItemChanged 事件 - 绑定源将自动订阅PropertyChanged 事件。

    要查看如何实现INotifyPropertyChanged 的示例,请参阅此link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-14
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 2021-05-23
      • 2020-05-15
      • 2011-06-05
      相关资源
      最近更新 更多