Windows XP中的ValueChanged事件

时间:2012-04-12 12:07:54

标签: c#

我有一个ValueChanged事件,我正在检查日期并向用户显示一条消息,并将DateTimePicker的值设置为另一个值。这是事件:

private void dtpStartDate_ValueChanged(object sender, EventArgs e)
{
    if (frmDate.Value < this.minDate)
    {
        MessageBox.Show("Date not found");
        frmDate.Value = previousValue;
        return;
    }
}

这在Windows 7中运行良好,但在Windows XP中显示消息框两次。我该如何解决?

2 个答案:

答案 0 :(得分:0)

如果你不想花太多精力,那就太脏了。)

private DateTime _lastDate;
private void dtpStartDate_ValueChanged(object sender, EventArgs e)
{
    if (_lastDate != frmDate.Value) {
        _lastDate = frmDate.Value;
        if (_lastDate < this.minDate)
        {
            MessageBox.Show("Date not found");
            frmDate.Value = previousValue;
            return;
        }
    }
}

答案 1 :(得分:0)

你这是错误的方式。 DateTimePicker类具有MaxDate和MinDate属性来处理它。只需在设计器中或运行时在表单加载时或在有意义的时候设置它们,那么您根本不必担心事件,没有人能够选择无效的日期。