C# 检测月历C中已更改的月份#

C# 检测月历C中已更改的月份#,c#,winforms,C#,Winforms,C中有一个MonthCalender# 有两个按钮可选择月份 一月、二月等等 无论如何,我可以检测到用户更改了月份吗?试试这个 private int MonthValue = 0; private bool bChanged = false; private void Form1_Load(object sender, EventArgs e) { MonthValue = monthCalendar1.TodayDate.Month; } private void monthCale

C中有一个MonthCalender#

有两个按钮可选择月份

一月、二月等等

无论如何,我可以检测到用户更改了月份吗?

试试这个

private int MonthValue = 0;
private bool bChanged = false;
private void Form1_Load(object sender, EventArgs e)
{
    MonthValue = monthCalendar1.TodayDate.Month;
}
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{

    if (MonthValue != monthCalendar1.SelectionStart.Month)
    {
        //changed
        bChanged = true;
        MonthValue = monthCalendar1.SelectionStart.Month;
    }
    else
    {
        //not changed
        bChanged = false;
    }
}

在日历控件上使用
OnVisibleMonthChanged
,并创建如下事件:

protected void Calendar1_VisibleMonthChanged(object sender, MonthChangedEventArgs e)
        {
            // Further processing goes here
        }

您可能可以将代理添加到按钮的单击事件中,但这只是猜测,从未使用过该控件。是。。这是一个正确的答案。但是,只有当您单击月份名称并选择其他月份时,这种方法才有效。如果你点击两个带“>”或“你有没有试着像我一样使用它,它可以很好地使用”。如果它进入if语句,我会放一个messagebox。因此messagebox会弹出新的月份。如果我点击新的月份,下个月会再次弹出。它会不停地弹出。这是你的意思吗?private void monthCalendar1\u DateChanged(对象发送者,DateRangeEventArgs e){if(MonthValue!=monthCalendar1.SelectionStart.Month){//changed bChanged=true;MonthValue=monthCalendar1.SelectionStart.Month;MessageBox.Show(“New Month”);}否则{//not changed bChanged=false;}是的..在MessageBox中,我没有写“New month”,而是写了MonthValue.ToString(),所以当前月份是10。如果我单击“>”,会弹出11。当我单击OK时,会弹出12,然后是1、2、3,依此类推。。