MaskedTextBox文本长度属性返回相同的值

时间:2015-05-05 23:14:22

标签: c# maskedtextbox

我有MaskedTextBox以及以下掩码

MaskedTextBox.Mask = @"000\.000\.000\.000";

对于测试我创建textBox,其中我显示在MaskedTextBox中写入的文本的长度。首先我添加EventHandler:

MaskedTextBox.TextChanged += new EventHandler(MaskedTextBoxTextChanged);

并编写测试函数来处理MaskedTextBox的行为:

private void MaskedTextBoxTextChanged(object sender, EventArgs e)
{
   MaskedTextBox mtb = sender as MaskedTextBox;
   TextBox.Text = mtb.Text.Length.ToString();
}

结果并不好,因为当我从左边键入MaskedTextBox中的第一个字符时,长度属性应为1.它不是1,它是12,并且这个数字在12位置后上升。如何修复这个bug?此外,我尝试在调用MaskedTextBoxTextChanged方法后使用零字符填充此MaskedTextBox,并且我想使用Text.Length属性。

1 个答案:

答案 0 :(得分:1)

首先,字符串的长度为15,而不是12(作为字符串,计算分隔符)。

关于长度,快速测试显示最小长度将是直到最后一个分隔符的字符串的长度。

然而,长度并不真正相关,因为你的面具意味着所有元素都是数字,而且都不是可选的。因此,如果没有为所有元素提供值,则它不是有效输入。

如果要屏蔽输入以接收数字,则可能需要先将其转换为数字数据类型,以便执行您正在进行的任何处理(我们不知道)。