日期:2014-05-17  浏览次数:21041 次

C# 如何让textbox控件中只能输入4个汉字或者8个英文字母?
在此,我不得不补充一点:问题是:汉字4个,英文字母8个,不是只能输入汉字或者字母。我已经实现了只能输入汉字或者字母了,但是汉字和字母无法区分,就是说汉字也是字母...这是我的代码:
 
private void limit()
{
 bool Ischar = false;
 int temp = 0;
 char[] crletter = {'a','b','c','d','e','f','g','h','i','j',
  'k','l','m','n','o','p','q','r','s','t',
  'u','v','w','x','y','z','A','B','C','D',
  'E','F','G','H','I','J','K','L','M','N',
  'O','P','Q','R','S','T','U','V','W','X',
  'Y','Z'};
char[] crtextbox = textBox1.Text.ToString().Trim().ToArray();

 
  foreach(char ch in this.textBox1.Text)
  {
  if(IsLetter(ch))
  {
  Ischar = true;
  }
  else
  {
  Ischar = false;
  } 
  }
  for(int i=0;i<crletter.Length;i++)
  {
  for(int j=0;j<crtextbox.Length;j++)
  {
  if(crletter[i] == crtextbox[j])
  {
  temp++;
  }
  else
  {
  temp = 0;
  }
  }
  }

 
  if(Ischar == true && temp != 0)
  {
  textBox1.MaxLength = 8; 
  }
  else if(Ischar == true && temp == 0)
  {
  textBox1.MaxLength = 4;
  }
  else
  {
  MessageBox.show("只能为字母或者汉字!");
  }
}

 
但是,只要是汉字或者英文字母都是进入
if(crletter[i] == crtextbox[j])
  {
  temp++;
  }
让temp不等于零,也就是说汉字和字母是一样的,这该怎么办呢?

------解决方案--------------------
我的方法比较笨
加个标识符
int a=0;
for(int i=0;i<textBox1.Text.Leng;i++)
{
if(((int)textBox1.Text[i]) > 255) a+=2;
else a++;
}
再后面判断a是否大于8
大于8就取消那次按键操作
------解决方案--------------------
用字符串的字节长度来控制就好了。代码如下
int t = Encoding.UTF8.GetByteCount(textBox1.Text);
if(t>8)
MessageBox.Show("最多只能输入4个汉字或者八个字母");
这样可以实现汉字字母混合输入