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个汉字或者八个字母");
这样可以实现汉字字母混合输入