注意:有一个非常相似的问题,但它是WPF特有的; 这个不是.
如何确定当前应用程序是否已激活(即具有焦点)?
我有一个带有UserControl的页面.如果用户在我想要处理的页面上的任何位置按Esc.
我认为这就像挂钩PreviewKeyDown事件,测试Esc键,然后处理它一样简单.但是,当我在事件处理程序中放置断点时,我发现它永远不会被调用.我想也许UserControl可能会被击中,所以我尝试了PreviewKeyDown ......结果相同.
有没有人知道在Page对象上测试KeyDown或PreviewKeyDown的正确位置?
我有一个包含很多控件的父表单.我要做的是过滤该表单的所有按键.麻烦的是,如果焦点在表单上的一个控件上,那么父表单没有获得按键事件,那么如何捕获按键事件?
我想捕获特定用户控件中的所有按键和鼠标单击.我需要这样做才能创建一个空闲检测,这样如果用户在用户控件中没有做任何事情,我可以解锁实体.
我的第一次尝试是PreProcessMessage检测Windows消息,但它似乎没有被调用?我的第二个是使用DefWndProc,但没有为这些消息调用它.
我怎样才能获得WM_KEYDOWN与WM_MOUSEUP用户控件和它的所有的孩子吗?
更新
ProcessKeyPreview 用于检测密钥
我有复杂的UserControl(网格,网格的编辑控件等等),我想要处理CTRL + C键盘快捷键,但我不想通过编辑控件(文本框,组合框等等)禁用本机功能. .如果CTRL + C没有被其他内部控件处理,我想自己处理它(从网格中复制整行等等).
我尝试在UserControl中覆盖WndProc方法并检查WM_COPY和WM_COPYDATA,但它不起作用.它仅适用于最终目标控件(例如TextBox).