用于maskedtextbox输入的C#Hex Mask
发布时间:2020-12-16 03:40:20 所属栏目:百科 来源:网络整理
导读:我正在尝试为文本框设置十六进制掩码.这样只能输入有效的十六进制数. (和’,’和’ENTER’) 它几乎可以工作.到目前为止它只允许来自a-f和数字0-9的小写字母,但我仍然可以输入大写字母GHIJKLM. (首先,当程序启动时,它似乎接受了一个char ex k,但是在它之后不
我正在尝试为文本框设置十六进制掩码.这样只能输入有效的十六进制数. (和’,’和’ENTER’)
它几乎可以工作.到目前为止它只允许来自a-f和数字0-9的小写字母,但我仍然可以输入大写字母GHIJKLM. (首先,当程序启动时,它似乎接受了一个char ex k,但是在它之后不会显示k之后,直到下次启动程序.这很奇怪.) 这是代码的一部分: private void EnterKey(Object sender,System.Windows.Forms.KeyPressEventArgs e) { // if keychar == 13 is the same as check for if <ENTER> was pressed if (e.KeyChar == (char)13) { // is <ENTER> pressed,send button_click button1_Click(sender,e); } { // this will only allow valid hex values [0-9][a-f][A-F] to be entered. See ASCII table char c = e.KeyChar; if (c != 'b' && !((c <= 0x66 && c >= 61) || (c <= 0x46 && c >= 0x41) || (c >= 0x30 && c <= 0x39) || (c == 0x2c))) { e.Handled = true; } } } 这就是我绑定事件的方式: private void textBox1_TextChanged(object sender,EventArgs e) { this.textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyDown); } 难道你们这些聪明人,看看我做错了什么? 这是我的第一个小程序,所以对我很轻松:o) 解决方法
这个:
c <= 0x66 && c >= 61 应该: c <= 0x66 && c >= 0x61 //hex literal 请注意,通过查找十六进制代码会浪费宝贵的时间,您可以轻松地比较字符: if ((c >= 'a') && (c <= 'f')) 至于第一个字符:你不应该在TextChanged事件中绑定KeyPress – 为时已晚!这是事件的顺序: >表格载荷 你想要做的是从一开始就绑定事件.最好的地方是Form_Load事件.您还可以使用“属性”窗口在设计时绑定事件 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |