ICSharpEditor和意外热键

时间:2009-09-01 18:53:43

标签: c# vb.net

我似乎对ICShartEditor文本编辑器有点问题。它在Windows窗体应用程序中对我来说很好,除非我在定义热键的同一窗体上有一个按钮(或任何其他控件)(如保存按钮的ALT-S),那么每当我尝试输入'在文本编辑器中的S'(或热键可能是什么),然后它触发热键而不是将字符添加到文本中。

幕后发生的事情是,表单的所有控件的所有ProcessMnemonic()方法都会运行,因此这些方法会启动并处理按键,我认为只有在像ALT这样的键时才会发生这种情况-key被按下了。

有没有人见过这种行为?任何变通方法或修复方法?

1 个答案:

答案 0 :(得分:0)

.Net表单并没有像许多人认为的那样实现助记符。 一个答案是覆盖表单中的ProcessMnemonic,并阻止它被调用,除非用户按下Alt键。

只需将其添加到您的表单类:

protected override bool ProcessMnemonic(char inputChar)
{
    if (Control.ModifierKeys == Keys.Alt)
        return base.ProcessMnemonic(inputChar);
    return false;
}