¿Cómo puedo hacer que un TextBox
solo acepte caracteres alfabéticos con espacios?¿Cómo hacer que un TextBox acepte solo caracteres alfabéticos?
Respuesta
Se puede utilizar el siguiente fragmento:
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "^[a-zA-Z ]"))
{
MessageBox.Show("This textbox accepts only alphabetical characters");
textBox1.Text.Remove(textBox1.Text.Length - 1);
}
}
Usted puede tratar de controlar el evento KeyPress
para el cuadro de texto
void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back);
}
Además dicen que permita la tecla de retroceso en caso de que desea eliminar algún texto, esta debería funcionar perfectamente bien para usted
EDIT
El código anterior no funcionará para pegar en el campo para el que creo que tendrá que usar el evento TextChanged
, pero entonces sería un poco más complicado tener que eliminar el carácter incorrecto o resaltarlo y colocar el cursor para que el usuario haga la corrección O tal vez podría validar una vez que el usuario haya ingresado el texto completo y etiquetado el control.
Este funciona muy bien, pero no me permitirá pegar un texto que debe pasar la validación. –
La forma más sencilla es para manejar el TextChangedEvent y comprobar lo que se ha escrito:
string oldText = string.Empty;
private void textBox2_TextChanged(object sender, EventArgs e)
{
if (textBox2.Text.All(chr => char.IsLetter(chr)))
{
oldText = textBox2.Text;
textBox2.Text = oldText;
textBox2.BackColor = System.Drawing.Color.White;
textBox2.ForeColor = System.Drawing.Color.Black;
}
else
{
textBox2.Text = oldText;
textBox2.BackColor = System.Drawing.Color.Red;
textBox2.ForeColor = System.Drawing.Color.White;
}
textBox2.SelectionStart = textBox2.Text.Length;
}
Ésta es una versión libre de expresión regular, si lo prefiere. Hará que el cuadro de texto parpadee en la entrada incorrecta. Tenga en cuenta que también parece admitir operaciones de pegado también.
señor que fue genial, pero ¿puede decirme en detalle cómo se detiene el tipado automáticamente? ¿Es solo el ciclo if el que verifica pero cómo se detiene el tipado? y sobre la expresión lambda? textBox1.Text.All (chr => char.IsLetter (chr)) de qué se trata todo esto. significa cómo funciona, por favor si puedes –
¡Oye! Bueno, lo que hace es almacenar el texto anterior de la entrada en la variable oldText. Luego, en el cambio posterior del cuadro de texto, se verifica carácter por carácter y, si el carácter no es una letra, devuelve el texto anterior. Si lo es, establece que el texto anterior sea el mismo que el actual (nuevo) de entrada de texto. Por lo tanto, si tiene una entrada válida, el valor oldtext es el valor TextBox, si tiene un resultado no válido, funciona al revés. También algunos estilos GUi ayudan a visualizar si hay un error o no. Espero que esto ayude. –
Entonces textBox2.Text.All() lambda devolverá falso si incluso un caracter no es una letra. Si todas son letras, devolverá verdadero. A partir de ese momento, tiene lugar la explicación anterior. –
if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "^[a-zA-Z]+$"))
{
}
else
{
textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1);
MessageBox.Show("Enter only Alphabets");
}
favor Prueba este
Código Escribir en Text_KeyPress eventos como
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsLetter(e.KeyChar))
{
e.Handled = true;
}
}
private void textbox1_KeyDown_1(object sender, KeyEventArgs e)
{
if (e.Key >= Key.A && e.Key <= Key.Z)
{
}
else
{
e.Handled = true;
}
}
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar >= '0' && e.KeyChar <= '9')
e.Handled = true;
else
e.Handled = false;
}
Por favor incluya una explicación de por qué su respuesta funcionará y cómo conectar el cuadro de texto a su evento. – Vulcronos
Ésta está trabajando absolutamente bien ...
private void manufacturerOrSupplierTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsControl(e.KeyChar) || char.IsLetter(e.KeyChar))
{
return;
}
e.Handled = true;
}
Gracias por el control IsControl. –
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsLetter(e.KeyChar) &&
(e.KeyChar !='.'))
{
e.Handled = true;
MessageBox.Show("Only Alphabets");
}
}
Explica mejor tu solución –
Prueba esto
private void tbCustomerName_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back||e.KeyChar==(char)Keys.Space);
}
Permite espacios en blanco Demasiado
puede probar siguiente código que alerta en el momento de la rueda de prensa clave
private void tbOwnerName_KeyPress(object sender, KeyPressEventArgs e)
{
//===================to accept only charactrs & space/backspace=============================================
if (e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Space))
{
e.Handled = true;
base.OnKeyPress(e);
MessageBox.Show("enter characters only");
}
Aquí está mi solución y funciona como se planeó:
string errmsg = "ERROR : Wrong input";
ErrorLbl.Text = errmsg;
if (e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Space))
{
ErrorLbl.Text = "ERROR : Wrong input";
}
else ErrorLbl.Text = string.Empty;
if (ErrorLbl.Text == errmsg)
{
Nametxt.Text = string.Empty;
}
Intente seguir el código en el evento KeyPress del cuadro de texto
if (char.IsLetter(e.KeyChar) == false &
Convert.ToString(e.KeyChar) != Microsoft.VisualBasic.Constants.vbBack)
e.Handled = true
- 1. ¿Cómo hacer que un WPF TextBox use caracteres de contraseña?
- 2. ¿Cómo puedo hacer que NSMutableArray solo acepte valores únicos?
- 3. Lista de caracteres alfabéticos Unicode
- 4. Plugin de validación de jQuery: ¿solo acepta caracteres alfabéticos?
- 5. ¿Cómo puedo hacer que un host virtual acepte varios dominios?
- 6. ¿Cómo puedo hacer que un socket acepte conexiones solo desde el localhost (en Java)?
- 7. Acepte solo caracteres restringidos usando accept in oracle
- 8. ¿Cómo hacer coincidir caracteres alfabéticos sin caracteres numéricos con expresiones regulares de Python?
- 9. ¿Cómo hacer que Spring acepte facilitadores fluidos (no-vacíos)?
- 10. División de cadena por caracteres no alfabéticos
- 11. Restricción de caracteres en un TextBox
- 12. ¿Cómo hacer un WPF TextBox PassThrough ApplicationCommands?
- 13. ¿Cómo hacer un autocompletar TextBox en ASP.NET?
- 14. Python: ¿Cómo hacer que StringIO.writelines acepte una cadena unicode?
- 15. Javascript regex para caracteres alfabéticos y espacios?
- 16. Rails 3 - Hacer que el campo de texto acepte solo valores numéricos
- 17. ¿Cómo se eliminan todos los caracteres alfabéticos de una cadena?
- 18. ¿Cómo puedo obtener una expresión regular para verificar que una cadena solo contenga caracteres alfabéticos [a-z] o [A-Z]?
- 19. Validación del modelo para permitir solo caracteres alfabéticos en el cuadro de texto
- 20. Hacer que una columna específica solo acepte valores numéricos en datagridview en Keypress event
- 21. ¿Cómo puedo hacer que un FileDialog java acepte directorios como su FileType en OS X?
- 22. ¿Cómo hacer un TextBox con un botón dentro de WPF?
- 23. Causa inversa de todos los caracteres alfabéticos en C# cadena
- 24. ¿Cómo hacer un método que acepte cualquier cantidad de argumentos de cualquier tipo en Java?
- 25. ¿Cómo enviar un diccionario a una función que acepte ** kwargs?
- 26. Cómo permitir que <input type = "file"> acepte solo archivos de imagen
- 27. ¿Cómo hacer que un bookmarklet se ejecute solo una vez?
- 28. ¿Cómo hacer que un MovieClip se elimine solo en AS3?
- 29. ¿Cómo restaurar Xcode para que acepte la arquitectura armv6?
- 30. Cómo hacer que Enter en un TextBox actúe como botón TAB
Parece que no funciona muy bien. Si agrego una letra y luego un número/espacio en blanco/lo que sea, me dejará ir ya que estoy satisfaciendo la expresión regular (comience con la letra). –
@favoretti ahora el código funciona bien, pero se produce una excepción si escribo el primer entero de caracteres y cuando presiono la tecla de retroceso para eliminarlos. El código funciona bien para numérico, aparece el mensaje cuando escribo el numérico.pero cuando traté de borrar con retroceso me da el error StartIndex no puede ser menor que cero, nombre del parámetro startIndex. ¿Cómo manejar esto? – chathwind