【发布时间】: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