2010-04-22 116 views
1

我在WinForms中創建了一個可移動面板。我在面板中使用ToolStrip作爲標題欄。我將使用ToolStrip移動面板,並指示面板是否處於「活動」狀態。所以當面板激活時,我想將ToolStrip的BackColor更改爲紅色。ToolStrip控件永遠不會觸發輸入/離開事件?

更新:面板將託管其他控件,如列表視圖。當託管控件獲得焦點時,我希望面板顯示爲「活動」,類似於普通窗口的行爲,而窗口變爲面板,標題欄變爲ToolStrip。

當面板被認爲是 「主動」

  1. 託管控制獲得焦點
  2. ToolStrip的是的MouseDown /鼠標點擊
  3. ToolStrip的被鼠標拖着

的想法是捕獲的ToolStrip的輸入/離開事件來改變顏色,但似乎這些事件從未被解僱。

這些事件真的沒有被解僱嗎?我應該捕捉其他事件嗎?

+0

面板和ToolStrip都不能獲得焦點。所以,不,Enter事件不會運行。 「主動」是什麼意思? – 2010-04-22 03:30:12

+0

我更新了我的問題。 – 2010-04-22 08:35:20

回答

0

mmmm有幾種方法可以做到這一點我猜。

你可以使用鉤到IMessageFilter消息,看看它在你的工具條/板,然後採取相應的行動(WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_LBUTTONUP等 - 參見Windows文檔上的Windows消息的十六進制消息代碼爲所有窗口消息)。有很多例子 - 例如:How to detect if the mouse is inside the whole form and child controls?

根據是否激活設置一個boolen,油漆中的覆蓋可以允許顏色設置 - 或者簡單地用/來代替布爾值。移動相同,爲移動設置一個布爾值,或者不移動 - 然後允許WM_MOUSEMOVE根據需要移動表格/面板(或不移動)。

+0

我怎樣才能得到(鍵盤事件)KeyDown或KeyUp或KeyPress事件ToolStripMenuItem ..甚至GotFoucs更好...有沒有什麼辦法chech如果用戶使用箭頭鍵焦點或輸入ToolStripMenuItem? – 2015-05-28 19:22:20

相關問題