我有一个表 SampleData,它有一个子表 Measurements。在我的 WinForm frmMain 上,一个 SampleData 对象绑定到 SampleDataBindingSource;MeasurementsBindingSource 将 SampleDataBindingSource 作为其数据源,将 Measurements 作为其 DataMember。一组文本框绑定到 SampleDataBindingSource;datagridview 绑定到 MeasurementsBindingSource。
对于 frmMain,我还有一个演示者类 preMain,它包含一个 SampleData 类型的属性 CurrentSample。SampleDataBindingSource.DataSource
绑定到 preMain 的 CurrentSample 属性 。
当 Measurements 中的属性足够多时,它会计算 FiringFactor,如果 FiringFactor 不为 1,它会将另一个 Measurement 项添加到 CurrentSample 的 Measurement 实体集中:
Partial Class Measurement
Private Sub UpdateFiringFactor()
Dim necessaryDataIsAvailable As Boolean = (Me.CrucibleMass IsNot Nothing And _
Me.CrucibleSampleFiredMass IsNot Nothing And _
Me.CrucibleSampleMass IsNot Nothing)
If necessaryDataIsAvailable Then
Me.FiringFactor = CDbl((Me.CrucibleSampleFiredMass - Me.CrucibleMass) / (Me.CrucibleSampleMass - Me.CrucibleMass))
If Me.FiringFactor <> 1 Then
Me.SampleData.AddNewMeasurement()
End If
End If
End Sub
Private Sub OnCrucibleMassChanged()
UpdateFiringFactor()
End Sub
Private Sub OnCrucibleSampleFiredMassChanged()
UpdateFiringFactor()
End Sub
Private Sub OnCrucibleSampleMassChanged()
UpdateFiringFactor()
End Sub
End Class
当我在 datagridview 中输入 CrucibleMass、CrucibleSampleMass 和 CrucibleSampleFiredMass 的值时,UpdateFiringFactor 方法确实运行正确,并且我最终将另一个测量项添加到 CurrentSample 的测量实体集中。但是,datagridview 不显示新行,并且 MeasurementsBindingSource 只有 1 条记录(但是CurrentSample.Measurements.Count = 2
)。
为什么变化CurrentSample.Measurements
不传播到MeasurementsBindingSource
?我已经尝试过MeasurementsBindingSource.ResetBindings(False)
, MeasurementsDataGridView.Refresh
, SampleDataBindingSource.ResetBindings(False)
,但似乎没有任何更新MeasurementsBindingSource
或其数据网格视图。