Winforms 在复杂winform上同步数据绑定控件

Winforms 在复杂winform上同步数据绑定控件,winforms,data-binding,Winforms,Data Binding,我有一个相当复杂的windows窗体,它使用一个强类型数据集和bindingsource组件,以选项卡形式表示祖父母>父母>子数据集 走下hirearchy使用bindngsource进行处理;我的问题是,我有一些数据的多个“并行”视图(例如,第一个选项卡是打开作业的摘要视图,其他选项卡显示此数据的父视图和子视图)以及“查找”下拉列表。所有这些我都试图保持同步,以便更改孙子记录将更新父bindingsources,以及同步查找下拉列表 我正在努力让它正常工作;我有保存当前作业的表单级属性和同步表

我有一个相当复杂的windows窗体,它使用一个强类型数据集和bindingsource组件,以选项卡形式表示祖父母>父母>子数据集

走下hirearchy使用bindngsource进行处理;我的问题是,我有一些数据的多个“并行”视图(例如,第一个选项卡是打开作业的摘要视图,其他选项卡显示此数据的父视图和子视图)以及“查找”下拉列表。所有这些我都试图保持同步,以便更改孙子记录将更新父bindingsources,以及同步查找下拉列表

我正在努力让它正常工作;我有保存当前作业的表单级属性和同步表单的例程,例如:

在bindingsource.positionchanged上:

 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>我会考虑创建你自己的事件,并在每一个地方都可以改变数据,引发一个“改变”的事件,并且你正在做的每一个数据绑定都为事件添加了一个处理程序,以确保它捕捉到事件并更新它当前的视图。