修饰符 + 不同的图表,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 可能会对您有所帮助。

但您最好考虑处理TextChangedevent 并检查TextLength,因为用户可以在 RichtextBox 中粘贴一些内容,这样就不会触发任何关键事件。

【讨论】:

以上是关于修饰符 + 不同的图表,Winforms的主要内容,如果未能解决你的问题,请参考以下文章

Koltin——最详细的可见性修饰符详解

12.访问修饰符的不同作用域

Java 访问权限修饰符 与 非访问权限修饰符

java修饰符

什么是修饰符?它有什么作用?举例说明

修饰符