Parent window 快捷方式从无模式中窃取输入 child
Parent window shortcut steals input from modeless child
我有一个带有 parent window 的应用程序,并且有可能从中拉出多个无模式 windows。
在其中一个无模式 windows 中,有一个文本框。
在文本框中键入时,我希望能够按 CTRL+A 以 select 所有文本。
但是,我的 parent window 有一个菜单项指定 CTRL+A 作为其快捷方式(它有自己的 select-all 之类的东西)。
在我的无模式 textbox/control/form 的 KeyDown 事件中,我从未看到 CTRL+A 通过。简而言之,它被 parent window 窃取了。我想覆盖它以在无模式 window 中做一些不同的事情。或者,我想重写它什么都不做。如果可能,我该怎么做?
选项 1(快速且简单):
在 WinForm 或 WPF 中,为 keydown 创建一个事件监听器。
在代码隐藏
private void textBox1_keyDown(object sender, KeyEventArgs e)
{
if (e.Control & e.KeyCode == Keys.A)
{
textBox1.SelectAll();
}
}
选项 2:
继承文本框并覆盖 OnPreviewKeyDown
在这里找到答案:
Best way to implement keyboard shortcuts in a Windows Forms application?
诀窍是重写 ProcessCmdKey 方法,在我的例子中,当您选择所需的输入 (Ctrl + A) 时 return 为真。
我有一个带有 parent window 的应用程序,并且有可能从中拉出多个无模式 windows。
在其中一个无模式 windows 中,有一个文本框。
在文本框中键入时,我希望能够按 CTRL+A 以 select 所有文本。
但是,我的 parent window 有一个菜单项指定 CTRL+A 作为其快捷方式(它有自己的 select-all 之类的东西)。
在我的无模式 textbox/control/form 的 KeyDown 事件中,我从未看到 CTRL+A 通过。简而言之,它被 parent window 窃取了。我想覆盖它以在无模式 window 中做一些不同的事情。或者,我想重写它什么都不做。如果可能,我该怎么做?
选项 1(快速且简单): 在 WinForm 或 WPF 中,为 keydown 创建一个事件监听器。 在代码隐藏
private void textBox1_keyDown(object sender, KeyEventArgs e)
{
if (e.Control & e.KeyCode == Keys.A)
{
textBox1.SelectAll();
}
}
选项 2: 继承文本框并覆盖 OnPreviewKeyDown
在这里找到答案: Best way to implement keyboard shortcuts in a Windows Forms application?
诀窍是重写 ProcessCmdKey 方法,在我的例子中,当您选择所需的输入 (Ctrl + A) 时 return 为真。