[英]LostFocus Method Firing Multiple Times
我有一個MaskedTextBox
,當程序失去對它的關注時,我想對其進行驗證。 我的方法有效地解決了我想解決的一個問題,該事件一遍又一遍地觸發,而不是一次觸發(當用戶輸入無效日期時)。
這是我正在使用的方法;
private void onDateTextBox_LostFocus(object sender, RoutedEventArgs e)
{
TextBox _dateTexBox = sender as TextBox;
if (!_dateTexBox.IsKeyboardFocusWithin)
{
if (Convert.ToInt32(dateTextBox.Text.Substring(0, 2)) > 31)
{
MessageBox.Show("Invalid day.");
dateTextBox.Focus();
}
if (Convert.ToInt32(dateTextBox.Text.Substring(3, 2)) > 12)
{
MessageBox.Show("Invalid month.");
dateTextBox.Focus();
}
if (Convert.ToInt32(dateTextBox.Text.Substring(6, 4)) > 2100)
{
MessageBox.Show("Invalid year.");
dateTextBox.Focus();
}
}
}
我輸入了IsKeyboardFocusWithin
檢查,但是該事件仍然觸發多次。 如何確保事件僅觸發一次?
如WPF中所述, DatePicker LostFocus觸發七次
LostFocus是一個路由事件,其路由策略設置為Bubble。 冒泡表示它會冒泡直到其父窗口直到根窗口,直到通過顯式設置e.Handled = true;進行處理為止。
因此,這意味着即使子控件失去焦點,它也會冒泡到您的datePicker,這就是為什么您看到該方法多次命中的原因。
希望這對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.