当单击我的DateTimePicker上的月份前进或后退箭头时
控制它反复触发ValueChanged事件。我必须使用
调试器以停止应用程序。
注意:只要单击日期之一,我的应用程序就可以正常工作。
MSDN文档显示了用于创建控件的示例。但是我不能
查找任何名为dateTimePicker1_ValueChanged()的示例函数。骨架
当我双击中的控件时,为我创建了此功能
VS.NET2008设计器。
最佳答案
Dave81使我走上了正确的轨道。
如果您按他说的去做,那么问题是,当用户手动更改值时,显然不会触发CloseUp事件。
我通过不断重新触发月份更改事件来解决此问题的方法是将ValueChanged事件更改为仅在日历未下降的情况下才刷新。 IE。:
private bool _calendarDroppedDown = false;
//called when calendar drops down
private void dateStartDateTimePicker_DropDown(object sender, EventArgs e)
{
_calendarDroppedDown = true;
}
//called when calendar closes
private void dateStartDateTimePicker_CloseUp(object sender, EventArgs e)
{
_calendarDroppedDown = false;
RefreshToolbox(null, null); //NOW we want to refresh display
}
//This method is called when ValueChanged is fired
public void RefreshToolbox(object sender, EventArgs e)
{
if(_calendarDroppedDown) //only refresh the display once user has chosen a date from the calendar, not while they're paging through the days.
return;
...
}