繁体   English   中英

ToolStrip控件从不触发Enter / Leave事件?

[英]ToolStrip control never fire Enter/Leave event?

我在WinForms中创建了一个可移动面板。 我使用ToolStrip作为面板中的标题栏。 我将使用ToolStrip来移动面板以及指示面板是否处于“活动”状态。 因此,当面板处于活动状态时,我想将ToolStrip的BackColor更改为Red。

更新:该面板将托管其他控件,例如列表视图。 我希望当托管控件获得焦点时,该面板显示为“活动”,有点像普通窗口的行为,而该窗口成为面板,标题栏变为ToolStrip。

当面板被视为“活动”时

  1. 托管控制获得关注
  2. ToolStrip被MouseDown / MouseClick
  3. 用鼠标拖动ToolStrip

这个想法是捕获ToolStrip的Enter / Leave事件以更改颜色,但似乎这些事件从未触发过。

那些事件真的没有被解雇吗? 我应该捕捉其他事件吗?

嗯,我猜有几种方法可以做到这一点。

您可以使用挂钩到IMessageFilter消息中,并查看它是否在工具栏/面板上,然后采取相应措施(WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_LBUTTONUP等-有关所有Windows消息的十六进制消息代码,请参阅Windows消息中的Windows文档)。 有很多关于-的示例,例如: 如何检测鼠标是否位于整个窗体和子控件中?

根据是否激活来设置布尔值,绘画中的覆盖可以允许颜色设置-或简单地将它们与布尔值一起翻转(或代替布尔值)。 与移动相同,为活动/非活动设置布尔值-然后允许WM_MOUSEMOVE根据需要移动表单/面板(或不移动)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM