我有三个DateTimePicker,其中之一是 startdate 和 enddate 之间的间隔。在部分代码中,我更新了startdate.Valueand enddate.Value,其ValueChanged事件更新了interval.Value。

interval当不需要手动更改in 的值时,一切正常。但是当我需要手动更改它时,它会导致StackOverflow异常,因为final.Value设置时,它会导致ValueChanged触发间隔的事件,从而改变final.Value,等等。
这是startdateand的 ValueChanged 处理程序enddate:
    private void dates_ValueChanged(object sender, EventArgs e)
    {
        if (startdate.Value < enddate.Value)
        {
            TimeSpan diff = enddate.Value - startdate.Value;
            DateTime newInterval = new DateTime(startdate.Value.Year, startdate.Value.Month, startdate.Value.Day, diff.Hours, diff.Minutes, diff.Seconds);
            if (interval.Value != newInterval)
                interval.Value = newInterval;
        }
    }
这是interval导致StackOverflow异常的 ValueChanged 处理程序:
    private void interval_ValueChanged(object sender, EventArgs e)
    {
        int seconds = intervaloDP.Value.Hour * 3600 + intervaloDP.Value.Minute * 60 + intervaloDP.Value.Second;
        finalDP.Value = finalDP.Value.AddSeconds(seconds);
    }
有没有办法更改此代码并使其按我需要的方式工作?