Winforms 在复杂winform上同步数据绑定控件
我有一个相当复杂的windows窗体,它使用一个强类型数据集和bindingsource组件,以选项卡形式表示祖父母>父母>子数据集 走下hirearchy使用bindngsource进行处理;我的问题是,我有一些数据的多个“并行”视图(例如,第一个选项卡是打开作业的摘要视图,其他选项卡显示此数据的父视图和子视图)以及“查找”下拉列表。所有这些我都试图保持同步,以便更改孙子记录将更新父bindingsources,以及同步查找下拉列表 我正在努力让它正常工作;我有保存当前作业的表单级属性和同步表单的例程,例如: 在bindingsource.positionchanged上:Winforms 在复杂winform上同步数据绑定控件,winforms,data-binding,Winforms,Data Binding,我有一个相当复杂的windows窗体,它使用一个强类型数据集和bindingsource组件,以选项卡形式表示祖父母>父母>子数据集 走下hirearchy使用bindngsource进行处理;我的问题是,我有一些数据的多个“并行”视图(例如,第一个选项卡是打开作业的摘要视图,其他选项卡显示此数据的父视图和子视图)以及“查找”下拉列表。所有这些我都试图保持同步,以便更改孙子记录将更新父bindingsources,以及同步查找下拉列表 我正在努力让它正常工作;我有保存当前作业的表单级属性和同步表
SetCurrentDetailJob(Me.PKSitesJobsBindingSource)
即:
Private Sub SetCurrentJob(ByVal JobBindingSource As BindingSource)
If JobBindingSource.Position > -1 Then
_CurrentJob = CType(CType(JobBindingSource.Current, DataRowView).Row, ARCallDataSet.JobsRow)
_CurrentSite = _CurrentJob.GetParentRow("PK_Sites_Jobs")
_CurrentCompany = _CurrentSite.GetParentRow("PK_Company_Sites")
End If
然后是执行此类操作的同步表单例程:
CompanyBindingSource.Position = CompanyBindingSource.Find("companyid", drsite.CompanyID)
我似乎永远无法完全避免某种连锁反应,bindingsource位置更改事件会多次触发,从而导致与bindingsources不正确同步的不一致。
我不确定处理这种同步逻辑的最佳方法
其他人如何处理这个问题?
< P>我会考虑创建你自己的事件,并在每一个地方都可以改变数据,引发一个“改变”的事件,并且你正在做的每一个数据绑定都为事件添加了一个处理程序,以确保它捕捉到事件并更新它当前的视图。