c# - MonthCalendar 上的 DateChanged 事件有问题

标签 c# winforms monthcalendar

尝试谷歌搜索,但无法真正找到答案。

拥有一个带有 MonthCalendar 控件和 DateChanged 事件处理的 Windows 窗体。该问题与通过鼠标单击更改月份有关。

我尝试在标签中显示一个计数器值,每次调用事件处理程序时都会对其进行计数。当月份更改时,事件处理程序将被调用 2 次。

当在事件处理中调用 MessageBox.Show("anything") 时,事件处理程序似乎被召回多次并且日历开始永远向后一个月改变。

有人知道为什么吗?

Windows 窗体类中的以下代码会导致所描述的行为:

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
    int i = int.Parse(labelDateChanged.Text);
    labelDateChanged.Text = (i + 1).ToString();
    MessageBox.Show(i.ToString());
}

private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
    int i = int.Parse(labelDateSelected.Text);
    labelDateSelected.Text = (i + 1).ToString();
}

最佳答案

不捕获所有 DateChanged 事件,但解决方案是处理 DateChangedKeyUpMouseUp 事件.

DateChanged 事件将 bool 值 IsDateChanged 设置为 trueKeyUpMouseUp 事件处理检查是否 IsDateChanged 并执行必要的代码 + 将 IsDateChanged 设置为 false.

关于c# - MonthCalendar 上的 DateChanged 事件有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4564355/

相关文章:

c# - throw 后生成

c# - ASP.NET - 我存储在缓存中的所有内容都是 w3wp 进程的一部分吗?

c# - 如何在 Treeview 控件中使子节点可见 = false

python - 我如何使用python获取上个月和前一年

c# - 使用编辑器模板在 MVC4 中提交后,回发对象未正确填充

c# - 如何将 XPS 文件中的每一页转换为 C# 中的图像?

c# - Web 应用程序和 Web 表单之间的混淆

c# - 如何在 C# 中将数据从子窗体发送到父 MDI 窗体或从父 MDI 发送到子窗体?

c++ - 问答 : How do I figure out what the last day of the month is?

python / Pandas : convert month int to month name