VB.NET 文本框有没有类似掩码一类的功能
想让用户只输入2005-05-06这样的格式,用户只需要输入数字 就可以了,怎么做 问题点数:30、回复次数:10Top
1 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-06-03 17:35:19 得分 0
可以使用正则表达式来判断。输入的时候只允许输入数字和-,
Top
2 楼LionWangCity(完美生活)回复于 2005-06-03 17:47:53 得分 5
你是想自动格式化吧。
VB6里的Mask可以实现。
.Net下没有Mask这个控件。
只能依靠第三方软件。Top
3 楼wowttt()回复于 2005-06-03 18:35:30 得分 0
我是用代码来控制,只是想知道有没有更好的办法。
If TextBox2.Text.Length = 4 Then
TextBox2.Text = TextBox2.Text + "-"
SendKeys.Send("{END}")
End If
If TextBox2.Text.Length = 7 Then
TextBox2.Text = TextBox2.Text + "-"
SendKeys.Send("{END}")
End IfTop
4 楼sagezk(SageZK)回复于 2005-06-03 18:52:14 得分 5
可喜的是VS.NET2005有.NET版MaskTextBox控件(我没记错的话,几个月前试用的),另外其它几个VB6下的ActiveX控件也有了.NET版本,另外如果你只想输入如2005-05-06这样表示日期格式的数据,可以使用DataTimePicker控件,不过[hamadou(闵峰)]的方法通用性较强,但要求也稍高了些,单单正则表达式就得用心研究研究(帮助文档地址如下:ms-help://MS.MSDNQTR.2003FEB.2052/cpgenref/html/cpconregularexpressionslanguageelements.htm),给你个建议,试试用变通的方法解决问题,最后一招才是依靠第三方控件!Top
5 楼hyj_828(水梦)回复于 2005-06-03 18:56:37 得分 0
代码实现嘛。Top
6 楼sagezk(SageZK)回复于 2005-06-03 19:05:40 得分 10
给你个思路,如下:
基本思想,创建个自定义控件,使其继承自TextBox控件,然后进行如下逻辑过程:
1.首先对字符进行筛选,只允许输入的字符为9个数字字符和-,参考TextBox控件的Overrides Protected Function IsInputKey函数(ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemWindowsFormsTextBoxClassIsInputKeyTopic.htm)
2.然后通过重写OnTextChanged函数,完成字符格式也就是输入字符(经过滤的合法字符)插入位置的逻辑。会用到SelectionStart和SelectionLength属性。
不过还是建议用正则表达式。通用性强吗!Top
7 楼rzpc(淡蓝色)回复于 2005-06-03 19:42:56 得分 5
用DateTimePicker控件完全可以实现楼主的需求。
把它的下拉功能禁止了即可。Top
8 楼jimmyzhu25(勿以分少而不为,勿以分多而为之)回复于 2005-06-03 20:30:38 得分 0
mark 学习Top
9 楼zhilong(子龙)回复于 2005-06-03 21:29:22 得分 0
bjTop
10 楼AntingZ(夕惕若)回复于 2005-06-03 22:51:10 得分 5
如果是输入日期的话,用DateTimePicker比较方便
如果还可能有其他格式,可以使用自定义控件,或者用Masked Edit ControlTop




