自定义控件textbox只输入数字

以前从来没有写日志的习惯,可是突然发现有些东西是要记录的。
当我有要记录读这本书的时候,很不幸我已经到120页了。要是把以前读过的记下来有多好,这样可以想起很多有用的技术。不过现在开始。也不晚。


         protected override bool ProcessKeyEventArgs(ref Message m)
        {
            int keyValue = m.WParam.ToInt32();
            // (keyValue > 47 && keyValue <58) ?Numbers 0 ?9
            // keyValue == 46 - Decimal point
            // (keyValue > 34 && keyValue <41) ?Home, End, and Arrow Keys
            // keyValue == 8 ?Backspace Key
            if ((keyValue > 47 && keyValue <58) || keyValue == 46 || (keyValue > 34 && keyValue <41) || keyValue == 8)
            {
                return base.ProcessKeyPreview(ref m);
            }
            else
            {
                // Delete Key
                if (m.Msg == 256 && keyValue == 46)
                {
                    return base.ProcessKeyPreview(ref m);
                }
                // Windows message id used to limit 1 beep per keystroke
                if (m.Msg == 258)
                {
                    MessageBeep(0);
                }
                return true;
            }
        }

   这里要说明几点:

(1):为了能够在用户输入错误的类型时发出“嘟”声。用到了windows API ,引用user32.dll库并声明外部方法。messageBeep,该访求中的unit 参数是无符号的整数,它来决定系统播放的波形文件。十六进制表示。

H0:系统默认的声音

H40:system asterisk

还有其它的参数,不记了以后找到手册查


[DllImport("user32.dll")]
 private static extern bool MessageBeep(uint uType);

2:在顶部那个方法是重写了TextBox中的PreProcessMessage  方法,当然textbox是从Control继承来的。

3:KeyValue代表从键盘输入的值,



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值