我已經獲得了C#表單中的TextBoxes。用戶輸入數據,然後當他們離開控制時(幾乎總是按Tab),我檢查數據以確保它是有效的。如果它無效,我想突出顯示他們的文本,以便他們可以立即修復它,而不必點擊它。在離開控件時,我怎樣才能再次控制焦點?
現在,在Control.Leave上,我驗證了他們的條目。這工作得很好。然而,由於他們打標籤,之後他們關閉該錯誤信息,則繼續到下一個對象,即使我有((TextBox)sender).Focus();
怎樣纔可以有上述火線形式標籤後下一個控件。
我已經獲得了C#表單中的TextBoxes。用戶輸入數據,然後當他們離開控制時(幾乎總是按Tab),我檢查數據以確保它是有效的。如果它無效,我想突出顯示他們的文本,以便他們可以立即修復它,而不必點擊它。在離開控件時,我怎樣才能再次控制焦點?
現在,在Control.Leave上,我驗證了他們的條目。這工作得很好。然而,由於他們打標籤,之後他們關閉該錯誤信息,則繼續到下一個對象,即使我有((TextBox)sender).Focus();
怎樣纔可以有上述火線形式標籤後下一個控件。
嘗試使用上TextBox
的LostFocus
事件再次聚焦其
你可能想看看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
如果處理Control.Validating事件,設置e.Cancel爲true,將阻止發生重點變化。
請注意,此方法也會停止按鈕的工作,所以您可能需要在某些按鈕上將Control.CausesValidation設置爲false。
您還需要下面的代碼片段在主窗體上,使關閉按鈕的工作:
protected override void OnFormClosing(FormClosingEventArgs e) {
e.Cancel = false;
base.OnFormClosing(e);
}