我有三个DateTimePicker
,其中之一是 startdate 和 enddate 之间的间隔。在部分代码中,我更新了startdate.Value
and enddate.Value
,其ValueChanged
事件更新了interval.Value
。
interval
当不需要手动更改in 的值时,一切正常。但是当我需要手动更改它时,它会导致StackOverflow
异常,因为final.Value
设置时,它会导致ValueChanged
触发间隔的事件,从而改变final.Value
,等等。
这是startdate
and的 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);
}
有没有办法更改此代码并使其按我需要的方式工作?