2011-04-29 130 views
1

我有一個自定義的類似TextBox的控件。我想這個處理退格鍵:Backspace只能使用一次?

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只是不工作?這是我退格兩次時​​得到的輸出:

得到退格。文本目前是「我的 文本框」。
將文本更改爲「我的 文本框」。
文本現在是「我的文本框」。
得到退格。文本目前是「我的 文本框」。
將文本更改爲「我的 文本框」。
文本現在是「我的文本框」。

這很可能是我見過的最奇怪的問題。

回答

0

事實證明,'\b'字符在按下退格鍵後正在追加到我的文本中。

1

嘗試從OnKeyUp()事件調用它。

+1

爲什麼要解決這個問題? – 2011-04-29 00:48:27

+0

這可能會讓我看到它(請參閱原始評論),謝謝反正。 +1 @Cody Gray:不應該。 – Ryan 2011-04-29 00:49:19