【问题标题】:Backspace only works once?退格只能使用一次?
【发布时间】:2011-04-29 00:40:47
【问题描述】:

我有一个自定义的类似 TextBox 的控件。我正在尝试用这个来处理退格:

    private void PerformBackspace() {
        System.Diagnostics.Debug.WriteLine("Got a backspace. Text is currently \"{0}\".", (object)this.Text);
        string newText = this.Text.Substring(0, this.Text.Length - 1);
        System.Diagnostics.Debug.WriteLine("Changing text to \"{0}\".", (object)newText);
        this.Text = newText;
        System.Diagnostics.Debug.WriteLine("Text is now \"{0}\".", (object)this.Text);
    }

OnKeyDown 中,我调用了这个方法,它有效,但仅适用于一个字符。连续两次退格不起作用,出于某种原因,您必须在退格之间输入至少一个字符。现在是Substring 不工作???这是我退格两次时​​得到的输出:

有退格键。文本目前是“我的 文本框。”。
将文本更改为“我的 文本框”。
文本现在是“我的文本框”。
有退格键。文本目前是“我的 文本框”。
将文本更改为“我的 文本框”。
文本现在是“我的文本框”。

这很可能是我见过的最奇怪的问题。

【问题讨论】:

    标签: c# substring


    【解决方案1】:

    尝试从 OnKeyUp() 事件中调用它。

    【讨论】:

    • 为什么要解决这个问题?
    • 那可能会让我看到它(请参阅原始评论),无论如何,谢谢。 +1 @Cody Gray:不应该。
    【解决方案2】:

    事实证明,在按下退格键后,'\b' 字符被附加到我的文本中。

    【讨论】:

      猜你喜欢
      • 2014-02-22
      • 2014-04-30
      • 1970-01-01
      • 2015-04-19
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多