2012-05-01 53 views
0

我在窗體上有2個輸入框。如果用戶輸入數據,他可以按Enter鍵查看它們是否正確,或者在其他情況下,messagebox將出現錯誤。現在我有一個小問題。當消息框出現並且用戶按下輸入時,msgbox消失並立即出現另一個消息框。我想消失,讓用戶改變他們的數據。我該如何解決這個問題? 我試圖解決這個問題:我添加了不可見的文本框,當用戶按下輸入此文本框獲得焦點時,如果出現錯誤msgbox並且最終發件人獲得焦點。 代碼:文本框和消息框

private void login(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Enter) 
    { 
     focus.Focus(); 
     if (password.Password == "" || account.Text == "") 
     { 
      MessageBoxResult result = MessageBox.Show("Fill login and password."); 
     } 
     if(sender.GetType() == account.GetType()) 
      ((TextBox)sender).Focus(); 
     else 
      ((PasswordBox)sender).Focus(); 
    } 
} 
+0

你爲什麼不使用WPF驗證(IDataErrorInfo的等)? – Phil

回答

1

嘗試設置e.Handled = TRUE;以防止按鍵傳播到您的文本框。

+0

我試圖在登錄方法的頂部通過它,之後我知道msgbox出現後按Enter鍵。我有什麼問題嗎? –

1

試試這個:

if (e.Key == Key.Enter && !string.IsNullOrWhiteSpace(txtPass.Text)) 
     { 
      if (1 + 1 != 3) 
      { 
       MessageBox.Show("Wrong!!!"); 
       txtPass.Clear(); 
       txtPass.Focus(); 
      } 
     } 
+0

它的工作原理,但我需要的方式不清除輸入框。也許我會加錯紅色標籤而不是messagebox,但這不是好的方法。 –