0

我有一个表格,上面有很多字段,其中大部分是可选的;由于我无法控制的原因,必填字段分散在整个表单中,而不是所有在顶部由一个大的“必需”标签组合在一起。

我被要求制作一个单独的表单,该表单可以从只有必填字段的主表单启动。这个想法是,用户可以打开“必填字段”表单,输入必要的数据,这些数据会在他们输入时自动显示在主表单中,然后关闭“必填字段”表单并填写他们想要的任何可选字段主窗体,然后最后保存窗体。

我已将“必填”表单上的字段与主表单中的关联字段绑定到完全相同的数据源,并且我知道这可以正常工作,因为我只能在“必填”表单中输入信息,然后保存,并保存输入的数据。我的问题是,虽然幕后的数据源得到更新,但另一个表单上的相应字段却没有。我希望能够在任一表单的必填字段中输入的任何内容立即显示在另一个表单的相应字段中,以便人们了解无论他们使用哪个字段,它都可以正确存储他们的输入。

我知道如何手动刷新字段以反映对其绑定数据的更改,但这样做会导致两种表单中的一堆事件处理程序说:“如果字段 X 发生变化,请在其他表单中更改字段 X”,这既荒谬地重复又过于耦合。有没有办法可以将控件设置为在绑定的数据源更改时自动刷新?绑定的数据源是 System.Data.DataSet 中的一个表,因此创建自己的实现INotifyPropertyChanged的​​数据源似乎有点矫枉过正;还有其他我没有注意到的方法吗?

4

1 回答 1

0

INotifyPropertyChanged 是 .NET 中自动刷新的机制,因此如果您希望表单自动更新以响应绑定数据的更改,则需要实现这一点。

如果您将 UI 控件绑定到数据源,则可以通过两种方式更新 UI 控件:

  1. UI控件每个时间段T轮询数据源
  2. 数据源在发生变化时通知 UI 控件

出于性能原因,轮询是不好的。INotifyPropertyChanged 是数据源通知 UI 控件更改的机制。

于 2013-09-03T15:11:26.103 回答