【问题标题】:modifier + different char, Win Forms修饰符 + 不同的图表,Winforms
【发布时间】: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


【解决方案1】:

由于KeyPress 事件发生在当控件具有焦点时按下字符、空格或退格键且修饰键对此事件没有影响时,看来使用KeyPress 可能会对您有所帮助。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多