我有下面的代碼,當用戶改變對我的「結束」日期DateTinePicker控制權的日期運行:VB.NET WinForms日期時間選擇器更改事件運行兩次?
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
這個過程似乎是兩次運行,因爲在MessageBox被顯示兩次。
我有錯事件,還是有一些更好的管理方式?
我試圖用一個變量進行編輯的建議:
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被修改時觸發一次,日期在開始日期之前。
感謝
菲利普
why dtpEndDate.Value = Today? – andy 2013-03-15 11:43:01
好吧,這確實是要取消更改... – 2013-03-15 12:03:13
如果今天,這將顯示一個'MessageBox'兩次。如果你同時使用'AddHandler'和'Handles',它也可能觸發多次。 –
JosephHirn
2013-03-15 12:30:26