退格只能运行一次?

时间:2011-04-29 00:40:48

标签: c# substring

我有一个类似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只是不工作???这是我退格两次时​​得到的输出:

  

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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