我有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属性。
答案 0 :(得分:1)
首先,字符串的长度为15,而不是12(作为字符串,计算分隔符)。
关于长度,快速测试显示最小长度将是直到最后一个分隔符的字符串的长度。
然而,长度并不真正相关,因为你的面具意味着所有元素都是数字,而且都不是可选的。因此,如果没有为所有元素提供值,则它不是有效输入。
如果要屏蔽输入以接收数字,则可能需要先将其转换为数字数据类型,以便执行您正在进行的任何处理(我们不知道)。