2009-09-11 64 views
4

在WinForms中,我可以處理Validated事件,以在用戶更改TextBox中的文本後執行某些操作。與TextChanged不同,Validated沒有針對每個字符更改進行觸發;它只會在用戶完成時觸發。WinForms中的等效項TextBox.Validating WPF中的事件

WPF中有什麼我可以用來得到相同的結果,只有在用戶完成後才提出的事件更改文本?

回答

2

LostFocus將在用戶從您的文本框移動到任何其他控件時觸發。

1

似乎沒有本地解決方案。 LostFocus事件是一個好主意。但是當用戶點擊Enter時,他希望TextBox驗證更改。 所以這裏是我的建議:當密鑰爲Enter時,使用LostFocus事件和KeyDown事件。

private void TextBox_LostFocus(object sender, RoutedEventArgs e) 
{ 
    // code to lauch after validation 
} 

private void TextBox_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Enter) 
    { 
     // call the LostFocus event to validate the TextBox 
     ((TextBox)sender).RaiseEvent(new RoutedEventArgs(TextBox.LostFocusEvent)); 
    } 
} 
2

LostFocus與驗證不等效。當你在一個屏幕上有多個文本框,並且每個文本框都有一些寫在Validate中的邏輯時,它會產生很多問題。在驗證事件中,您可以輕鬆地控制焦點,但無法輕鬆控制焦點。