2012-05-19 27 views
-1

我在窗體上有各種輸入文本框。根據每個輸入文本框中的條目,我更新顯示文本框。但是,使用文本框的AppendText消息。我的輸入文本框設置爲只接受數字值。因此,對於正確輸入的每個字符,我都會更新顯示文本框。我遇到的問題是當用戶選擇Key.Back或Key.Delete時,我想要做的是在顯示文本框中對最後一個字符進行刪除,但我還沒有把它弄清楚。如何使用AppendText()或該控件中可用的任何實用函數刪除包含在TextBox中的字符串中的最後一個字符?在Windows中處理KeyCode/KeyChar事件表單TextBox控件

If (e.KeyChar = ChrW(Keys.Back)) Then 
       txtDisplay.Text -= 1 
       txtDisplay.Update() 
       ElseIf (Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar) Or (e.KeyChar = "."))) Then 
        e.Handled = True 
       Else 
        txtDisplay.AppendText(e.KeyChar) 
       End If 
+2

KeypPress事件處理程序使用此這不是你的唯一問題。在查看此頁面時,請鍵入Ctrl + A,Ctrl + C。返回到您的程序,右鍵單擊該文本框並選擇粘貼。改用驗證事件。 –

回答

0

txtDisplay

If e.KeyChar = ChrW(Keys.Back) Then 
     If txtDisplay.Text.Length > 0 Then 
      txtDisplay.Text = txtDisplay.Text.Substring(0, txtDisplay.TextLength - 1) 
      txtDisplay.SelectionStart = txtDisplay.Text.Length 
     End If 
    ElseIf (Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar) Or (e.KeyChar = "."))) Then 
     e.Handled = True 
    End If 
+0

這個神奇的代碼是做什麼的?它如何解決他遇到的問題?它與他已有的代碼有什麼不同? –

+0

@Cody Gray:我是我的工作站,我只是嘗試了他的代碼。當我按「烘烤空間」時,它會扣除1。添加兩次獲取任何數字。爲什麼不嘗試這兩個**魔術代碼** –

+0

親自試一試。 **注意:**我正在使用** VS 2010 ** –