protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            int ch = (int)keyData;
            if ((ch >= 48 && ch <= 57) || (keyData >= Keys.NumPad0 && keyData <= Keys.NumPad9) || ch == 189 || ch == 190 || ch == 8 || ch == 46)   //数字
            {
                return false;
            }
            else
            {
                return true;
            }
        }
以上只能在英文输入法状态才能输入,在智能ABC中文状态下,不管是全角还是半角都不能正常输入字符。(搜狗五笔或拼音又可以)

解决方案 »

  1.   

    我觉得更好的方法是直接禁用IME,你的功能中需要打开输入法吗?
      

  2.   

    你要自定义文本框?
    样式控制下
    css{ ime-mode:disabled;}这样只能输入数字和字母
      

  3.   

    是一个录入窗体,数值型的指标要限制只能录入数字,尝试过ImeMode.Off,Close或是Disable、OnHalf都不行。
      

  4.   

    我的环境:Win 7 x64,vs 2008,程序应用为framework 2.0
      

  5.   

    而且为什么在
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {}中,拼音ABC输入法输入的keyData都是229呢