C#  winform  文本框  只允许输入  半角的数字 如何才能屏蔽 全角输入还有半角的 汉字和字母

解决方案 »

  1.   

    直接添加个keypress事件判断输入的ascii是不是在48~57之间。
      

  2.   

    之前做过,没有太好的解决办法。
    1 使用TextChanged事件,输入全角0到9,a到Z时,修改为半角。
    2 保存是修改。
    3 自己定义输入法。
      

  3.   


     private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                byte[] array = System.Text.Encoding.Default.GetBytes(e.KeyChar.ToString());
                if (!char.IsDigit(e.KeyChar) || array.LongLength == 2) 
                    e.Handled = true;
                if (e.KeyChar == '\b' || e.KeyChar == '.') 
                    e.Handled = false;
            }
      

  4.   

    文本框有个属性,可以限制只能输入半角,那个属性就不记得了
            /// <summary>
            /// 限制输入数字以外的字符且为半角
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void txtRuYuanCount_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) && e.KeyChar != 8)
                {
                    e.Handled = true;
                }
                byte[] array = System.Text.Encoding.Default.GetBytes(e.KeyChar.ToString()); 
                if (!char.IsDigit(e.KeyChar)|| array.LongLength==2) e.Handled = true; 
                if (e.KeyChar == '\b' || e.KeyChar == '.') e.Handled = false;         }第二种,,转换
    ///全角转半角
    public string NarrowToSmall(string inputString)

        char[] c = inputString.ToCharArray(); 
          for (int i = 0; i < c.Length; i++)
          { 
                byte[] b = System.Text.Encoding.Unicode.GetBytes(c,i,1); 
                 if (b.Length == 2) 
                { 
                      if (b[1] == 255)
                     { 
                            b[0] = (byte)(b[0] + 32); 
                            b[1] = 0; 
                              c[i] = System.Text.Encoding.Unicode.GetChars(b)[0]; 
                        } 
                 } 
            } 
            for(int i=0;i<c.Length;i++)
            {
                if(47<c[i]<58||c[i]==46)
                else
                {
                    MessageBox.Show("有非数字");
                    return null;
                }
            }
            string returnString = new string(c); 
             return returnString;   // 返回半角字符 
    }