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

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

最佳答案

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

要使更改生效,您需要将 Substring() 的结果分配回文本框,如下所示:

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

确保首先检查字符串的长度以避免处理短字符串(少于 2 个字符)时出现问题。

此外,如果您想限制文本框中的字符数,只需使用 MaxLength属性(property)代替。您不必以这种方式处理处理长度和输入。

关于C# 从文本框中删除最后两个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39561111/

相关文章:

WPF TextBox 自定义词典支持

c# - 如何使用 C# 和 ASP.NET 将用户放入队列

wpf - WPF 中带有图像图标的文本框

c# - C#/Java 中动态对象的限制

c# - 文本框 : Modify user's input

html - Visual Studio 2012 不会收回 HTML 自动格式设置 (Ctrl+K+D) 上的缩进

c++ - 自动格式化将 >> 更改为 >>

html - 如何自动在 Visual Studio 上按字母顺序排列 HTML 属性?

c# - IIS 连接超时和连接字符串超时属性

c# - 在 WPF 中对分类数据进行分组