您所在的位置: 首页 >> 推荐文章 >> 正文

正确认识MaskedTextBox控件的属性
发表日期:2010年11月26日   作者:whitewin   点击:

    使用MaskedTextBox控件,可以限制用户输入字符时,只能输入特定的字符,对于其它字符不予接受。如果在输入电话号码时,将MaskedTextBox控件的Mask属性设置为9000-00000009,则表示可以输入3位或4位区号,以及7位或8位电话号码。其中0表示任意数字,9表示该位可选(可以输也可以不输)。

    但是,掩码文本只是限制用户只能输入哪些字符,并不能强制用户必须全部输入。如上面的掩码,在输入12-456这样的电码号码时,虽然电话号码没有输入完整,但输入焦点仍然可以离开该文本框。

    为了实现当输入不符合要求时,输入焦点不能离开,必须完全正确输入后才能离开,则必须结合相应的验证事件,以及其它一些属性。如MaskFull属性可以判断所有必要输入和选择输入是否都已经完成,MaskComplete属性可以判断所有必要输入都已经完成。

    此时,不能使用TypeValidationCompleted事件进行验证,因为这个事件只是在类型验证完成后触发的。虽然电话号码没有输入完整,但类型还是正确的,是String型。

    所以,需要结合Validating事件进行验证,代码如下:

        private void tbPhone_Validating(object sender, CancelEventArgs e)
        {
            if (!tbPhone.MaskCompleted)  //是否已经完成所有必须输入
            {
                // 没有完成,显示错误信息,不接受输入
                errorProvider1.SetError(tbPhone, "电话号码输入不正确。");
                e.Cancel = true;
            }
            else
            {
                // 清除错误信息
                errorProvider1.SetError(tbPhone, "");
            }
        }