2014-09-23 40 views
0

我已經獲得了C#表單中的TextBoxes。用戶輸入數據,然後當他們離開控制時(幾乎總是按Tab),我檢查數據以確保它是有效的。如果它無效,我想突出顯示他們的文本,以便他們可以立即修復它,而不必點擊它。在離開控件時,我怎樣才能再次控制焦點?

現在,在Control.Leave上,我驗證了他們的條目。這工作得很好。然而,由於他們打標籤,之後他們關閉該錯誤信息,則繼續到下一個對象,即使我有((TextBox)sender).Focus();

怎樣纔可以有上述火線形式標籤後下一個控件。

回答

0

嘗試使用上TextBoxLostFocus事件再次聚焦其

1

你可能想看看Control.CausesValidation財產

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.causesvalidation(v=vs.110).aspx

您可以在用戶離開焦點之前驗證控件,而不是等待焦點移動。

這裏是關於Control.Validating事件的MSDN文檔,在佈局獲取/失去控件焦點時的事件順序方面做得很好。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating(v=vs.110).aspx

通知Control.Validating和Control.Validated如何前Control.LostFocus推出。您可以在之前執行驗證步驟,以允許用戶失去文本框的焦點。

還有上stackoverflow.com一個相當不錯的以前的答案,概述如何做到這一點:C# Validating input for textbox on winforms

1

如果處理Control.Validating事件,設置e.Cancel爲true,將阻止發生重點變化。

請注意,此方法也會停止按鈕的工作,所以您可能需要在某些按鈕上將Control.CausesValidation設置爲false。

您還需要下面的代碼片段在主窗體上,使關閉按鈕的工作:

protected override void OnFormClosing(FormClosingEventArgs e) { 
    e.Cancel = false; 
    base.OnFormClosing(e); 
} 
相關問題