该成:
if((int)e.KeyChar>=48&&(int)e.KeyChar<=57||(int)e.KeyChar==8||(int)e.KeyChar==46)
少了一个 & ,变成了按位与了

解决方案 »

  1.   

    输入中文的时候不引起KeyPress事件的产生,你需要判断文本的text是否包含中文
      

  2.   

    输入中文的时候引起了KeyPress事件.我是一步步跟的.
    我在这段e.Handled=true;下面加了一句Microsoft.VisualBasic.Interaction.Beep();
    输入中文或者英文的时候,发生嘟嘟声的.
      

  3.   

    输入法和输入英文不一样的,用keypress事件作判断不行的。我在javascript中是在焦点离开控件的时候做判断。
      

  4.   

    不好意思,我写错了,应该是输入中文的时候在KeyPress事件里e.Handled=true不起作用
    我的方法是:
    string str原来的text = "";
    bool is含有中文 = false;
    private void txtGoodsCount_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    this.str原来的text = ((TextBox)sender).Text;
    //含有中文
    if (e.KeyChar >= 0x4e00 && e.KeyChar <= 0x9fa5)
    {
    this.is含有中文 = true;
    }
    else
    {
    this.is含有中文 = false;
    }
    }
    private void txtOrderMoney_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
    {
    if(this.is含有中文)
    {
    MessageBox.Show("不能输入中文!","系统提示");
    ((TextBox)sender).Text = this.str原来的text;
    ((TextBox)sender).SelectionStart = ((TextBox)sender).Text.Length ;
    this.is含有中文 = false; }
    }
    希望能看到更好的办法
      

  5.   

    ((TextBox)sender).ImeMode =ImeMode.Disable;
      

  6.   

    在 Enter 和 KeyPress 两个事件中加入
    ((TextBox)sender).ImeMode = ImeMode.Disable;
      

  7.   

    在 Enter 和 KeyPress 两个事件中加入
    ((TextBox)sender).ImeMode = ImeMode.Disable
    这种方式也不能完全限定输入法,当用鼠标控制右下角的输入法时还是能输入中文
      

  8.   

    jacksonjian(不说) 的方法应该可以吧,设置ImeMode。不过,没有实验过。
      

  9.   

    输入和显示完全两回事。你做的确实不能输入中文和字母。但可以显示中文。
    其实也可以显示英文,不信你copy几个字母到你的textbox里看看。中文的输入就相当于将文字从输入法界面复制到光标界面,我这么认为。