我有一个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: