当我的DateTimePicker控件上单击月向前或向后箭头时,它会重复触发ValueChanged事件.我必须使用调试器来停止应用程序.
注意:只要我点击其中一个日期,我的应用程序就可以正常运行.
MSDN文档显示了用于创建控件的示例.但我找不到任何名为dateTimePicker1_ValueChanged()的示例函数.当我双击VS.NET2008设计器中的控件时,为我创建了此函数的框架.
Dav*_*e81 13
我不清楚你想要实现什么,但我的猜测是你想要显示一个消息框或类似的东西.如果是这样,那么没有恐惧,因为你正面临着我前段时间想到的同样问题.而不是使用的的ValueChanged -event,使用特写 -event. 特写 -event被触发,只有当用户最终选择的值.希望这是你想要的.如果想要更新例如在UI中向用户显示的一些计算,则可以使用ValueChanged -event.
小智 4
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;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10817 次 |
| 最近记录: |