代码之家  ›  专栏  ›  技术社区  ›  Paul Sasik

应用程序的快捷键被子组件“吞没”

  •  2
  • Paul Sasik  · 技术社区  · 14 年前

    F10层 , 11层 12层 . 除了某些控件具有焦点(例如第三方网格控件)的情况外,快捷方式工作得很好。在这种情况下 11层

    我真的不想,也不能用第三方控件,修改每个控件(有几十个)来传递我的信息 F级* 钥匙。我想挂应用程序的信息泵,但这似乎是一个严峻的解决方案。有没有更好、更聪明的方法来处理这种情况?

    (这是一个.NET WinForms MDI(2.0)应用程序,它承载许多种类的home Spin以及第三方组件。)

    3 回复  |  直到 13 年前
        1
  •  2
  •   Chris Dunaway    14 年前

    如何将窗体的KeyPreview属性设置为True?你应该能够截获你想要的钥匙或者让它们通过。

    http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx

    如果这不起作用,您可以重写WndProc并直接处理消息,但这需要更多的努力。

        2
  •  0
  •   HardCode    14 年前

    您是否尝试在MDI子窗体级别捕捉按键?然后,您可以在一个地方将相关的F*键传递给MDI父级。

        3
  •  0
  •   Jasper wontondon    13 年前

    • 覆盖子WndProc
    • 覆盖函数ProcessKeyPreview

    这些都不起作用,尽管其中任何一个都应该起作用。这是我的怀疑,冒犯儿童控制做了类似的事情,并没有发挥好。它是一个旧的win32ocx,实际上可能正在做一些非常讨厌的事情,比如在操作系统级别连接到消息。不确定。

    解决方法 是用来 中高音 +另一把钥匙。不管出于什么原因,使用 + D级 11层

    此解决方案是围绕第三方控件的黑客攻击和真正的黑盒问题。我希望我知道到底发生了什么,但我不知道,虽然我怀疑第三方控件有自己的钩子到消息泵,并正在拦截消息 -钥匙。