c#中的控件文本框,仅允许8个数字和最后一个字母
我正试图在c#中制作一个文本框,它只能容纳8个第一个数字和最后一个字母,就像西班牙的DNI一样。这是我的密码:c#中的控件文本框,仅允许8个数字和最后一个字母,c#,winforms,C#,Winforms,我正试图在c#中制作一个文本框,它只能容纳8个第一个数字和最后一个字母,就像西班牙的DNI一样。这是我的密码: private void textBox5_KeyPress(object sender, KeyPressEventArgs e) { int contador = 0; do { e.Handled = !(char.IsNumber(e.KeyChar) |
private void textBox5_KeyPress(object sender, KeyPressEventArgs e)
{
int contador = 0;
do
{
e.Handled = !(char.IsNumber(e.KeyChar) || e.KeyChar == (char)Keys.Back); //8 numeros
contador++;
} while (contador < 8);
if (contador == 8) // Si se han escrito 8 numeros hago que se escriba la ultima letra
{
e.Handled = false;
textBox5.MaxLength = 9;
if(char.IsLetter(e.KeyChar))
{
e.Handled = true;
}
}
}
private void textBox5\u按键(对象发送器,按键事件参数e)
{
int contador=0;
做
{
e、 Handled=!(char.IsNumber(e.KeyChar)| | e.KeyChar==(char)Keys.Back);//8个数字
contador++;
}而(contador<8);
如果(contador==8)//s se han escrito 8 numerios hago que se escriba la ultima letra
{
e、 已处理=错误;
textBox5.MaxLength=9;
if(字符Isleter(e.KeyChar))
{
e、 已处理=正确;
}
}
}
与标准的文本框相比,有更好的控制来实现您的目标。看看标准winforms
控件提供的MaskedTextBox
。您只需设置Mask
属性。在您的情况下,它将是:
maskedTextBox1.Mask = "00000000L";
0-数字,必填项。此元素将接受0和9之间的任何一位数字。
L-字母,必填。将输入限制为ASCII字母a-z和a-z。此掩码元素相当于正则表达式中的[a-zA-z]。
有关更多信息,请查看链接。那么问题是什么?