1

我有一个带有父窗口的应用程序,并且有可能从中拉出多个无模式窗口。

在这些无模式窗口之一中,有一个文本框。

在文本框中输入时,我希望能够按 CTRL+A 来选择所有文本。

但是,我的父窗口有一个菜单项,指定 CTRL+A 作为它的快捷方式(它自己做选择所有的事情)。

在我的无模式文本框/控件/表单的 KeyDown 事件中,我从来没有看到 CTRL+A 出现。简而言之,它正在被父窗口窃取。我想覆盖它以在无模式窗口中做一些不同的事情。或者,我想重写它以不做任何事情。如果可能的话,我该怎么做?

4

2 回答 2

2

在这里找到答案: 在 Windows 窗体应用程序中实现键盘快捷键的最佳方法?

诀窍是覆盖 ProcessCmdKey 方法并在我选择所需的输入 (Ctrl + A) 时返回 true。

于 2015-04-30T19:35:32.390 回答
0

选项 1 (Quick & Dirty):在 WinForm 或 WPF 中,为 keydown 创建一个事件监听器。在代码隐藏中

private void textBox1_keyDown(object sender, KeyEventArgs e)
{
    if (e.Control & e.KeyCode == Keys.A)
    {
        textBox1.SelectAll();
    }
}

选项 2:继承文本框并覆盖 OnPreviewKeyDown

于 2015-04-29T22:23:13.680 回答