修饰符 + 不同的图表,Winforms
Posted
技术标签:
【中文标题】修饰符 + 不同的图表,Winforms【英文标题】:modifier + different char, Win Forms 【发布时间】: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
中粘贴一些东西,这样就不会触发任何关键事件。
【参考方案1】:
由于KeyPress
事件发生在当控件具有焦点时按下字符、空格或退格键且修饰键对此事件没有影响时,看来使用KeyPress
可能会对您有所帮助。
但您最好考虑处理TextChanged
event 并检查TextLength
,因为用户可以在 RichtextBox 中粘贴一些内容,这样就不会触发任何关键事件。
【讨论】:
以上是关于修饰符 + 不同的图表,Winforms的主要内容,如果未能解决你的问题,请参考以下文章