1

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

3 回答 3

0

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

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

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

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

于 2013-03-06T07:03:23.107 回答
0

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

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

于 2013-03-06T06:59:46.350 回答
0

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

要查看如何INotifyPropertyChanged实现的示例,请参见例如此链接

于 2014-12-30T14:22:21.057 回答