Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationRow.cs =================================================================== diff -u -re385fc00bf3c2a7e9363acc70a997463e125fc94 -rec14fc942722c507e8227ee0ad1a188173399834 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationRow.cs (.../GrassCoverErosionInwardsCalculationRow.cs) (revision e385fc00bf3c2a7e9363acc70a997463e125fc94) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationRow.cs (.../GrassCoverErosionInwardsCalculationRow.cs) (revision ec14fc942722c507e8227ee0ad1a188173399834) @@ -48,7 +48,7 @@ /// /// Fired when has changed. /// - public EventHandler DikeProfileChanged; + public event EventHandler DikeProfileChanged; /// /// Creates a new instance of . Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationsView.cs =================================================================== diff -u -r3a9bdc607d09f3c608af661cb261480eb52abe33 -rec14fc942722c507e8227ee0ad1a188173399834 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationsView.cs (.../GrassCoverErosionInwardsCalculationsView.cs) (revision 3a9bdc607d09f3c608af661cb261480eb52abe33) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsCalculationsView.cs (.../GrassCoverErosionInwardsCalculationsView.cs) (revision ec14fc942722c507e8227ee0ad1a188173399834) @@ -202,6 +202,38 @@ #endregion + protected override void SubscribeToCalculationRow(GrassCoverErosionInwardsCalculationRow calculationRow) + { + base.SubscribeToCalculationRow(calculationRow); + + calculationRow.DikeProfileChanged += DikeProfileChanged; + } + + protected override void UnsubscribeFromCalculationRow(GrassCoverErosionInwardsCalculationRow calculationRow) + { + base.UnsubscribeFromCalculationRow(calculationRow); + + calculationRow.DikeProfileChanged -= DikeProfileChanged; + } + + private void DikeProfileChanged(object sender, EventArgs e) + { + if (IsProfileInSelectedFailureMechanismSection()) + { + return; + } + + UpdateDataGridViewDataSource(false); + } + + private bool IsProfileInSelectedFailureMechanismSection() + { + IEnumerable lineSegments = Math2D.ConvertPointsToLineSegments(SelectedFailureMechanismSection.Points); + GrassCoverErosionInwardsCalculationScenario calculation = ((GrassCoverErosionInwardsCalculationRow) Selection).Calculation; + + return IsCalculationIntersectionWithReferenceLineInSection(calculation, lineSegments); + } + private void AddWarningMessage() { var warningPanel = new Panel();