我似乎对ICShartEditor文本编辑器有点问题。它在Windows窗体应用程序中对我来说很好,除非我在定义热键的同一窗体上有一个按钮(或任何其他控件)(如保存按钮的ALT-S),那么每当我尝试输入'在文本编辑器中的S'(或热键可能是什么),然后它触发热键而不是将字符添加到文本中。
幕后发生的事情是,表单的所有控件的所有ProcessMnemonic()方法都会运行,因此这些方法会启动并处理按键,我认为只有在像ALT这样的键时才会发生这种情况-key被按下了。
有没有人见过这种行为?任何变通方法或修复方法?
答案 0 :(得分:0)
.Net表单并没有像许多人认为的那样实现助记符。 一个答案是覆盖表单中的ProcessMnemonic,并阻止它被调用,除非用户按下Alt键。
只需将其添加到您的表单类:
protected override bool ProcessMnemonic(char inputChar)
{
if (Control.ModifierKeys == Keys.Alt)
return base.ProcessMnemonic(inputChar);
return false;
}