輸入無效日期(必須是正確的或過去的日期)後,e.Cancel = true,但退出按鈕的關閉事件不會觸發。我拿出了e.Canel = true聲明,一切似乎都正常,但我擔心這會在未來導致另一個問題。對此進行編碼的正確方法是什麼?當e.Cancel = True時,表單無法關閉DateTime
private void maskedTextBoxDate_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
{
if (!e.IsValidInput)
{
toolTip1.ToolTipTitle = "Invalid Date";
toolTip1.Show("The data you supplied must be a valid date in the format mm/dd/yyyy.", maskedTextBoxDate, 40, 25, 2000);
}
else
{
//Now that the type has passed basic type validation, enforce more specific type rules.
DateTime userDate = (DateTime)e.ReturnValue;
if (userDate > DateTime.Today)
{
toolTip1.ToolTipTitle = "Invalid Date";
toolTip1.Show("The date can't be greater than today's date.", maskedTextBoxDate, 40, 25, 2000);
//Cancel property: true if the event should be canceled; otherwise false
e.Cancel = true;
}
}
}
退出按鈕關閉事件:
private void cmdExit_Click(object sender, EventArgs e)
{
this.Close();
}
當你嘗試退出時觸發'TypeValidationCompleted'事件? – AbZy
如果用戶沒有輸入日期,我必須說不,它不會觸發。但他們可能會將它拖到下一個文本框中,然後它會。 – KFP
我不明白你爲什麼取消TypeValidationEventArgs事件?通過明確設置事件取消意味着你不想驗證?不要這樣做,你可以使用公共變量並隨時隨地讀取其值。 –