当前位置:  开发笔记 > 编程语言 > 正文

用于maskedtextbox输入的C#Hex Mask

如何解决《用于maskedtextbox输入的C#HexMask》经验,为你挑选了1个好方法。

我正在尝试为文本框设置十六进制掩码.这样只能输入有效的十六进制数.(和','和'ENTER')

它几乎可以工作.到目前为止它只允许来自af和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  was pressed
    if (e.KeyChar == (char)13)
    {
        // is  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)



1> Kobi..:

这个:

c <= 0x66 && c >= 61 

应该:

c <= 0x66 && c >= 0x61 //hex literal

请注意,通过查找十六进制代码会浪费宝贵的时间,您可以轻松地比较字符:

if ((c >= 'a') && (c <= 'f'))

至于第一个字符:你不应该绑定KeyPressTextChanged事件-这是为时已晚!这是事件的顺序:

    表格载荷

    ...

    用户点击一个键.

    触发TextChanged,更改文本并绑定事件.

    用户点击一个键.

    KeyPress被触发.

你想要做的是从一开始就绑定事件.最好的地方是Form_Load活动.
您还可以使用"属性"窗口在设计时绑定事件

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有