我有一個WinForm應用程序,在窗體上有幾個輸入控件。在驗證事件處理程序(Validating
或Validated
)中,我需要根據驗證的值確定下一個要激活的控件。如何在.NET中進行驗證後將焦點設置爲控件
在Validating事件的微軟的文檔,它指出:
注意
不要試圖從輸入,的GotFocus,離開,引發LostFocus,確認內設置焦點,或驗證的事件處理程序。否則可能導致您的應用程序或操作系統停止響應。有關詳細信息,請參閱「鍵盤輸入參考」一節中的WM_KILLFOCUS主題以及MSDN庫中「關於消息和消息隊列」主題的「消息死鎖」一節,主題爲http:// msdn.microsoft.com/library 。
對於Form類,有一個ActiveControl
屬性,它允許設置要變爲活動的控件,並且不提及任何限制。經過幾個小時的網絡搜索後,我還沒有找到任何其他解決方案。
是從我的驗證事件處理程序設置ActiveControl
屬性(而不是Focus
)一個安全的方式來積極激活我想要的控件?如果沒有,有沒有解決辦法?
由於.NET Compact Framework沒有ActiveControl
屬性,任何人都可以提出解決方案嗎?
哇,聰明的答案!我認爲委託方法必須調用EndInvoke(),但是在我知道Delegate.BeginInvoke()和Control.BeginInvoke()之間的區別之前。請參閱\t [.net - Invoke()和BeginInvoke之間的區別是什麼] [1] [1] http://stackoverflow.com/questions/229554/whats-the-difference-between-invoke-and-begininvoke – Suncat2000 2011-02-11 19:13:49