【发布时间】:2013-03-15 11:35:55
【问题描述】:
当用户更改我的“结束”日期 DateTinePicker 控件上的日期时,我会运行以下代码:
Private Sub dtpEndDate_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtpEndDate.ValueChanged
If dtpEndDate.Value.Date < dtpStartDate.Value.Date Then
MessageBox.Show("The end date should be after the start date", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
dtpEndDate.Value = Today
End If
End Sub
这个过程似乎运行了两次,因为消息框显示了两次。
我有错误的事件,还是有更好的方法来管理它?
我尝试按照建议使用变量对其进行编辑:
Private Sub dtpEndDate_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtpEndDate.ValueChanged
If m_blndtpEndDateIsDone = False Then
If dtpEndDate.Value.Date < dtpStartDate.Value.Date Then
MessageBox.Show("The end date should be after the start date", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
m_blndtpEndDateIsDone = True
dtpEndDate.Value = Today
Else
m_blndtpEndDateIsDone = False
End If
Else
m_blndtpEndDateIsDone = False
End If
wnd sub
不幸的是它仍然会发射两次......
我希望每次修改结束日期 dtpicker 并且日期早于开始日期时触发一次。
谢谢
菲利普
【问题讨论】:
-
为什么 dtpEndDate.Value = 今天?
-
嗯,真的是要取消改动了……
-
如果
Today < dtpStartDate.Value.Date,这将显示MessageBox两次。如果您同时使用AddHandler和Handles,它也可能会触发多次。 -
@GLOIERTECH。是的,我已经尝试了所有提供的选项,现在正在尝试 @Hans Passant 建议的 ErrorProvider 选项
标签: vb.net winforms datepicker controls