C#从文本框中删除最后两个字符

时间:2016-09-18 18:21:52

标签: c# textbox autoformatting

我有一个文本框,我正在尝试为电话号码实现自动格式化。

如果用户按下删除键并且文本框中字符串的最后一个字符为'-',我想删除文本框的最后两个字符。

我试图通过子串移除来做到这一点,但没有运气。感谢

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);
                    }
                }
            }     

2 个答案:

答案 0 :(得分:2)

Substring()返回一个新的字符串实例,并保持当前实例不变。因此,您的调用只会创建一个新的临时字符串,但由于您不对其执行任何操作,因此会立即将其丢弃。

要进行更改,您需要将phoneNumberTextBox.Text = phoneNumberTextBox.Text.Substring(0, phoneNumberTextBox.Text.Length - 2); 的结果分配回文本框,如下所示:

{{1}}

请务必先检查字符串的长度,以避免处理短字符串(少于2个字符)时出现问题。

此外,如果要限制文本框中的字符数,请改用MaxLength属性。您不必处理处理长度和打字方式。

答案 1 :(得分:2)

对于2 char去除可以做:

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

对于按键部分可能是您必须在表单上启用KeyPreview。

哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇