[英]Alt-Tab notification on panels within a form
我试图在面板上清除一些变量,例如,如果我有一个bool让我知道当我单击拖动面板表面时我将鼠标指针事件发生时设置为false(这可能会也可能不会这是正确的方法,但作为一个例子)。
如果单击拖动我然后alt-tab到另一个应用程序,面板本身似乎没有得到任何通知,例如focus-> leave / mouseup,例如,是否有我遗漏的东西,我忽略了一个事件?
似乎有一种方法可以通过使用表单Deactivate事件来做到这一点,我想我可以在我的面板上调用一个挂起类型方法,如果我创建一个新的Panel类,但我想知道是否已经存在的东西会传播所有表格上的孩子有一些通知表明我们的表格不再是主要焦点。
可靠地获取这些通知需要您使用Capture属性。 在MouseDown事件上将其设置为true。 它确保所有鼠标消息都指向您的面板,即使鼠标不再悬停在面板上也是如此。 然而,这仍然不包括粗略的焦点变化,如Alt + Tab或Alt + Esc。 您还需要实现MouseCaptureChanged事件以了解操作系统何时介入。
通常,如果您尝试实现Drag + Drop,那么您应该使用DoDragDrop()。 当它返回时,无论出于何种原因,始终可以确保拖动操作已完成。 方法的返回值告诉您发生了什么。 请注意,这也支持切换到另一个窗口,虽然它不是很容易被发现,但是拖动到任务栏按钮强制切换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.