解決使用工具欄組件時控件焦點事件的問題

winform程序,窗體上使用了toolStrip控件,也就是工具欄按鈕控件。窗體上還有一些文本框,在文本框的失去焦點事件——也就是Leave事件中,做一些填寫內容的驗證,若驗證通過,則將數據保存在某個對象A中。工具欄上有一些功能按鈕,比如保存,將對象A中保存的內容保存下來。

 

但是發現,點擊在toolStrip上添加的保存按鈕,無法觸發文本框的Leave事件,導致若填寫內容後直接點擊保存,將不會做內容的驗證及將內容保存在對象A中,進一步導致文本框中的內容無法保存下來。

 

試驗了一下,發現點擊toolStrip中的按鈕,的確不會使得文本框失去焦點。既然如此,只好想辦法將焦點改變,從而觸發文本框的Leave事件。

 

幾經查閱和實驗,發現倒也不難,只要在點擊“保存”按鈕時,用toolStrip1.Focus()將焦點設置在工具欄上即可。此時,會觸發文本框的Leave事件,進而做數據的驗證等,但若是數據驗證不通過,則不應該繼續執行保存功能。因此,可以在窗體中增加一個成員變量,用來記錄數據驗證的結果。在點擊“保存”按鈕時,用toolStrip1.Focus()改變焦點後,再根據增加的成員變量的值,來判斷是否要繼續進行保存操作。

 

工具欄是這樣,估計菜單欄也是這樣,不過沒有試過,應該是同樣的道理吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章