2016-09-18 46 views
1

我有一個文本框,我試圖實現一個電話號碼自動格式化。C#刪除文本框中的最後兩個字符

如果用戶按下刪除鍵並且文本框中字符串的最後一個字符是'-',我想刪除文本框的最後兩個字符。

我正試圖通過子字符串刪除來做到這一點,但沒有運氣。由於

private void phoneNumberTextBox_KeyDown(object sender, KeyEventArgs e) 
     { 
      if (e.KeyCode == Keys.Back) 
      { 
       if (phoneNumberTextBox.Text.Length != 0) 
       { 
        if (Convert.ToChar(phoneNumberTextBox.Text.Substring(phoneNumberTextBox.Text.Length - 1)) == '-') 
        { 
         phoneNumberTextBox.Text.Substring(0, phoneNumberTextBox.Text.Length - 2); 
        } 
       } 
      }  
+1

http://www.visual-basic-tutorials.com/Tutorials/Controls/MaskedTextBox.html – Slai

回答

2

Substring()返回一個新字符串實例,並離開當前實例不變。正因爲如此,你的調用只是創建一個新的臨時字符串,但因爲你沒有做任何事情,它會立即拋出。

要做出改變棒,你需要的Substring()結果分配迴文本框,如下所示:

phoneNumberTextBox.Text = phoneNumberTextBox.Text.Substring(0, 
    phoneNumberTextBox.Text.Length - 2); 

請務必檢查字符串的長度第一,以避免處理短字符串問題(少於2個字符)。

此外,如果您想限制文本框中的字符數,則只需使用MaxLength屬性。你不必處理處理長度和打字的方式。

+0

這工作就像一個魅力!謝謝。現在我遇到了一個問題,即在操作完成時文本光標移動到文本框的開頭。 –

+0

@AlexEdwards發生這種情況是因爲縮短了字符串 - 脫字符號將處於無效位置,因此它會移動到字符串的開頭。你爲什麼不設置文本框的'MaxLength'屬性? – xxbbcc

+0

@AlexEdwards我添加了一個鏈接到'MaxLength' - 這可能對你更好。 – xxbbcc

2

爲2焦炭去除可以這樣做:

phoneNumberTextBox.Text = phoneNumberTextBox.Text.Remove(phoneNumberTextBox.Text.Length - 2, 2); 

對於在按鍵部分可能是你必須啓用的KeyPreview你形成。

哇,爲編輯做錯了全部。

相關問題