我可以使用Control.Enter和Control.Leave事件來檢測用戶焦點何時進入或離開控件,但這隻適用於每個表單的基礎。我在我的應用程序中使用了多個表單,並且想要跟蹤哪個控件具有用戶焦點,我必須使用表單的「激活」和「禁用」事件來跟蹤哪個表單處於活動狀態,然後跟蹤哪個控件關注於每個表單。如何檢測進入/離開每個應用程序的控制權,而無需訪問控制表單?
我們正在使用DockPanel套件構建客戶端,因此我們無法直接訪問控件的表單。我們不能只將偵聽器添加到控件的頂級窗體中,因爲當用戶停靠或取消面板時,偵聽器會發生更改。但是我們仍然需要將注意力集中在每個應用程序的基礎上。如何在無需訪問控制表單的情況下檢測進入/離開每個應用程序的控制權?
不幸的是,WM_SETFOCUS消息並不總是通過消息隊列,所以我不能攔截它。見http://www.pcreview.co.uk/forums/thread-1314811.php – Simon 2009-02-23 10:32:18