2011-12-02 82 views
0

我認爲Leave應該在控件失去焦點時觸發,而MouseLeave本應該在鼠標不在控件中時觸發。爲什麼TextBox在鼠標離開時離開?

我有一個文本框,如果我點擊它,然後拿出鼠標,Leave事件觸發。我正在使用「離開」來驗證框中的條目,例如當用戶點擊標籤以轉到下一個控件時。

這是否意味着一個文本框不能有焦點,除非鼠標仍然在它?

回答

2

您必須有其他代碼設置焦點,因爲當鼠標移出控件時,Leave不會觸發。

+0

我會去檢查...是的,還有另一個控件將注意力集中在MouseEnter上,這會導致TextBox離開。謝謝! 5分鐘後就會接受。 – Almo

0

如果鼠標在裏面沒關係。屬性焦點指的是另一種類型的事件,當組件準備好更改其值時,使用鍵盤或鼠標無關緊要。爲什麼在文本框丟失焦點時不驗證TextBox值?

+0

這就是我想要做的。我認爲「離開」事件應該在TextBox失去焦點時觸發。發生的事情是,當鼠標離開控制時,Leave事件也會觸發。 – Almo

+0

是的!這就是我試圖解釋的,對不起!在Focus事件中輸入遊覽驗證碼(丟失焦點事件) –

2

您不應該使用LeaveLostFocus進行驗證,而應該使用TextBox.Validating,這是專門爲驗證場景設計的。

這樣,如果你想擁有例如Cancel按鈕,只需將其CausesValidation屬性設置爲false和編輯控制Validating事件將不會觸發。