【发布时间】:2015-09-23 09:45:33
【问题描述】:
假设我的应用程序由富文本框和一个按钮组成。我希望当用户在 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;
}
}
【问题讨论】:
-
检查您的
RichTextBox是否有文本就足够了,然后启用您的按钮。这样您就可以处理TextChanged事件并检查TextLength属性。 -
我的richtextbox 已经有一个文本。我的意思是,这只是简单的解释,我的情况更复杂,当我说richtextbox.text =“Something”时我需要知道如何解决它,现在当我按下 Shift 时它被禁用,但是当我按下 Shift+char 时它已启用。
-
@RezaAgheai 是的,我知道这一点,正如我在一个问题中所写的那样。但在这种特殊情况下,我不能使用 TextChanged,这就是问题所在。
-
看来使用
KeyPress事件来启用按钮对你来说已经足够了,因为修饰符和箭头键,...对KeyPress没有任何影响。 -
但是你最好考虑
TextChanged,因为用户可以在RichtextBox中粘贴一些东西,这样就不会触发任何关键事件。
标签: c# winforms richtextbox keyevent modifiers