在WinForms中关闭WebBrowser的键盘快捷键不起作用

时间:2017-10-10 12:10:41

标签: c# .net winforms user-controls

我有一个usercontrol,我在其中放置了一个WebBrowser作为编辑器。我希望能够使用Ctrl + Enter来关闭表单,当我关注RichTextControl用户控件或TagPage控件时,我已经可以做了。 (参见图1的文档大纲 - WebBrowser已添加到代码中的tabPageEdit。)我的问题是,Ctrl + Enter在WebBrowser聚焦时不起作用。

我在班级RichTextControl.cs中的工作代码:

void RichTextControl_KeyUp(object sender, KeyEventArgs e)
{
    if(e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter)
    {
        close();
    }
}

void tabControlEdit_KeyUp(object sender, KeyEventArgs e)
{
    if( e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter)
    {
        close();
    }
}

在我的班级RichEditor.cs(即WebBrowser)中,我尝试使用与ProcessCmdKey()中相同的实现来覆盖RichTextControl.cs方法,但它不起作用。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    KeyEventArgs e = new KeyEventArgs(keyData);
    if( e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter)
    {
        richTextControl.close();
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}

声明e.Modifiers == Keys.Control始终为真,但e.KeyCode == Keys.Enter永远不会成立,因为e.KeyCode == ControlKeys。我在这里做错了什么?

图片1:

enter image description here

0 个答案:

没有答案