我有一個簡單的小對話框,讓用戶設置一個「時間塊」。用戶指定塊的指定開始時間,然後可以輸入持續時間或輸入塊的結束時間。例如,他們可以說上午8點開始,上午11點結束,或者上午8點開始,持續180分鐘。我有一個文本框的持續時間,和一個DateTimePicker的結束時間。 DateTimePicker的自定義格式是「hh:mm tt」。文本框工作得很好。在文本框的離開事件中,我使用正確的結束時間更新DateTimePicker。DateTimePicker離開/ ValueChanged事件
但是,讓DateTimePicker工作並不容易。當Leave事件觸發時,DateTimePicker並不總是具有正確的值。
此外,我有一個要求,以確保時間塊的持續時間至少15分鐘,所以理想情況下,當用戶「離開」要麼控制,我可以更新其他控制,並且還驗證其在至少15分鐘。 (如果< 15,我將它設置爲15)。
好了,時間對於一些代碼:
private void SetDuration(int Duration)
{
Duration = Math.Max(15, Duration);
m_TextBoxDuration.Text = Duration.ToString();
m_DateTimePickerEndTime.Value = m_DateTimePickerStartTime.Value.AddMinutes(Duration);
}
private void m_TextBoxDuration_Leave(object sender, EventArgs e)
{
int duration = 0;
int.TryParse(m_TextBoxDuration.Text, out duration);
SetDuration(duration);
}
private void m_DateTimePickerEndTime_Leave(object sender, EventArgs e)
{
SetDuration((int)(m_DateTimePickerEndTime.Value.Subtract(m_DateTimePickerStartTime.Value).TotalMinutes));
}
這裏的區別。假設日期時間選擇器的時間設置爲07:00 PM。如果用戶突出顯示「07」並且類型6點擊Tab,則Leave事件在ValueChanged事件之前觸發。如果用戶鍵入06,然後鍵入Tab,則事件順序相反。所以我不能依靠任何一個事件成爲最後的事件。我不想每次獲取ValueChanged事件時都(無法)更新,因爲那麼最小持續時間要求可能會讓用戶試圖進行編輯。
幫助?