ToolStrip控件永远不会触发输入/离开事件?
我在WinForms中创建了一个可移动面板。我在面板中使用ToolStrip作为标题栏。我将使用ToolStrip移动面板,并指示面板是否处于“活动”状态。所以当面板激活时,我想将ToolStrip的BackColor更改为红色。ToolStrip控件永远不会触发输入/离开事件?
更新:面板将托管其他控件,如列表视图。当托管控件获得焦点时,我希望面板显示为“活动”,类似于普通窗口的行为,而窗口变为面板,标题栏变为ToolStrip。
当面板被认为是 “主动”
- 托管控制获得焦点
- ToolStrip的是的MouseDown /鼠标点击
- ToolStrip的被鼠标拖着
的想法是捕获的ToolStrip的输入/离开事件来改变颜色,但似乎这些事件从未被解雇。
这些事件真的没有被解雇吗?我应该捕捉其他事件吗?
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根据需要移动表格/面板(或不移动)。
我怎样才能得到(键盘事件)KeyDown或KeyUp或KeyPress事件ToolStripMenuItem ..甚至GotFoucs更好...有没有什么办法chech如果用户使用箭头键焦点或输入ToolStripMenuItem? – 2015-05-28 19:22:20
面板和ToolStrip都不能获得焦点。所以,不,Enter事件不会运行。 “主动”是什么意思? – 2010-04-22 03:30:12
我更新了我的问题。 – 2010-04-22 08:35:20