让我们说我的应用程序包含Rich Text Box和一个按钮。我希望当用户在RTB中按下某个键时启用该按钮,但是它不能任何修饰符。
我可以在像PreviewKeyDown这样的KeyEvent中处理这个问题,但是当我按下修饰符+其他字符时它不起作用,例如SHIFT + S,这是有效的,导致结果是字母S.有没有办法分开我的要求还是应该采用一些不同的方法?我可以使用TextChanged,但我已经写了很多动作,我更愿意这样做。
简单说明:
private void richTextBox_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (!e.Alt && !e.Control && !e.Shift)
{
this.button1.Enabled = true;
else
this.button1.Enabled = false;
}
}
答案 0 :(得分:2)
由于KeyPress
事件在控件具有焦点且修改键对此事件没有影响时按下字符,空格或退格键时发生,似乎使用KeyPress
可能对您有帮助。 / p>
但您最好考虑处理TextChanged
事件并检查TextLength
,因为用户可以在RichtextBox中粘贴某些内容,这样就不会触发任何关键事件。