Focus相關點滴
獲取當前焦點所在的控件.spa
- .Net自己沒有該API.必須使用Win32 API解決.
- internal static extern IntPtr GetFocus();
- Control focusedControl = Control.FromHandle(GetFocus());
- 判斷控件是否含有焦點.
- Focused屬性獲取Control自己是否含有焦點.
- ContainsFocus屬性用以判斷Control自己以及其子控件是否含有焦點.
- Select()/Focus()方法
- 在初始化時,若是想選中某個控件.
- 在New()/Load事件中使用focus()是不能夠的.由於控件尚未加載完畢.
- 在New()/Load事件中,使用Select()方法能夠.
- 或者將該控件的TabIndex設置爲0.
- 關於不可見控件.
- 使用Focus()方法無效.直接返回false.
- 使用Select(),會遞歸向上尋找父Control,直到某一層的父Control能夠被選中.那麼選中之.
- 關於不可選中控件.
- MSDN中,舉出了Selectable爲false,也就是所謂不可選中的控件的列表.這裏咱們使用Label做實驗.得出的結果非常詭異,而且跟MSDN中不一致.
- 在Load事件/New()中,Select()/Focus()方法都是無效的.
- 在系統加載完畢後(如一個Button的點擊事件中).使用Select()/Focus()方法均可以將焦點置於Label之上.此時調用系統API的GetFocus()時,獲得的焦點控件是Label.可是,重點是,其Focused/ContainsFocus屬性都是False.
歡迎關注本站公眾號,獲取更多信息