0

我正在处理电话号码框。我已经制作了(888)888-8888. 但现在我想操作后退空间。如果有人给出了错误的号码,他可以编辑它。

问题是当我尝试从右侧删除最后一个数字时。它停止从末尾删除 4 位数字后的数字。它向我展示了这样的结果(888)888-

这是我的数字和破折号格式的代码。

if (phonebox.Text.ToString().Length == 1)
                {

                    phonebox.Text = "(" + phonebox.Text.ToString();
                    phonebox.Select(phonebox.Text.Length, 0);

                }

                else if (phonebox.Text.ToString().Length == 4)
                {

                    phonebox.Text = phonebox.Text.ToString() + ")";
                    phonebox.Select(phonebox.Text.Length, 0);

                }

                else if (phonebox.Text.ToString().Length == 8)
                {

                    phonebox.Text = phonebox.Text.ToString() + "-";
                    phonebox.Select(phonebox.Text.Length, 0);

                }

这是我尝试的解决方案,但不确定它是否有效。

else if (phonebox.Text.ToString().Length == 9)
            {

                phonebox.Text = phonebox.Text.ToString()+"";
                phonebox.Select(phonebox.Text.Length, 0);

            }
4

2 回答 2

0

我不确定您删除字符的方法,但这一行并没有删除破折号,它只是附加了一个空字符串对象。

 phonebox.Text = phonebox.Text.ToString()+"";

如果要删除最后一个字符,可以这样做

phonebox.Text = phonebox.Text.Substring(0, phonebox.Text.Length - 1)

或者,您可以将 替换为-空字符串。

phonebox.Text = phonebox.Text.Replace("-", "");
于 2013-05-06T12:46:37.930 回答
0

最好的方法是在 if 和 if else 检查中添加一个额外的条件。我要你做的是添加

(Control.ModifierKeys & Keys.Backspace) == 0 

进入你的条件句

这将检查按下的键是否是退格键。如果是,那么它不会对您的文本字段执行上述修改。

例如

 if ( (Control.ModifierKeys & Keys.Backspace) == 0  && phonebox.Text.ToString().Length == 1)

SO文章引用 了如何检测当前按下的键?

于 2013-05-06T12:49:58.717 回答