2009-11-02 46 views
0

我有一些ToolStrips包含按鈕的控件。當鼠標進入工具條時,我需要顯示或隱藏一些按鈕。我知道神祕肉不好,但這是我必須做的。如何可靠地檢測鼠標何時離開控件?

當鼠標進入時,ToolStrip的MouseEnter事件觸發,但MouseLeave並不總是在鼠標離開時觸發。我認爲這可能是因爲鼠標已經從小孩內部轉移到了不受控制的範圍之外,而沒有通過控制本身。

如何可靠地檢測鼠標何時離開控件?

+0

我無法重現此行爲。我在一個面板的工具欄內創建了一個按鈕(並且在沒有面板的情況下也嘗試了它)。即使當窗體沒有焦點並且鼠標直接從按鈕跳轉到桌面時,當鼠標分別離開按鈕和工具欄時,我總會爲按鈕和工具欄獲取MouseLeave事件。我正在使用.NET 3.5 SP1的Visual C#2008 Express。 – BlueMonkMN 2009-11-02 23:59:20

回答

0

只有當控件擁有鼠標捕獲時,MouseLeave纔會觸發。

0

我會遠離全局鉤子。

引用自:MSDN

注意您應該使用全局鉤子 僅用於調試目的;否則,你應該避免它們。 全局掛鉤會傷害系統性能 並導致與實施全局掛鉤類型相同的其他 應用程序發生衝突。

一旦你的應用程序丟失了重點事件,就更難處理了。重新評估您的業務規則。

也許你需要做的是在失去焦點時禁用你的應用程序。這將強制用戶在使用工具條之前單擊或選擇您的應用程序。此時,您可以捕獲Control.GotFocus事件並執行所需的任何邏輯。

相關問題