Tienes que tener en cuenta que windows funciona contra el servidor. Si quieres hacer el control por carácter ingresado debes hacerlo con javascript.
Si quieres hacerlo contra el servidor, tienes una opción engorrosa en la cantidad de cálculo, que aparece descrita aquí:
http://www.forosdelweb.com/f29/valid...bforms-730716/
Básicamente cotejar char a char, tienes que definir que quieres que analice para cada char que quieras controlar, es decir if(char='Ñ' || char='ñ' || char='á' || char='Á' ... etc) { //no validar }
La otra opción es usar expresiones regulares. De una forma como esta...
//Validación del formato de nombre usando una regular expression. OJO. Incluye en la validación [ñáéíóú] y especios en blanco.
public static Boolean validarNombre(String nombre)
{
string expresion = "[a-z]?[ñáéíóú]?[\\s]?";
if (Regex.IsMatch(nombre, expresion))
{
if (Regex.Replace(nombre, expresion, String.Empty).Length == 0)
{ return true; }
else
{ return false; }
}
else
{
return false;
}
}
Y para el validator
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
//Validación de nombre de persona utilizando una expresión regular
string nombre = TextBox1.Text.ToLower().Trim();
if (!validarNombre(nombre))
{
TextBox1.Text = "Error";
args.IsValid = false;
}
else { }
}
//Si lo que quieres es que no valide ñ ni tildes, tienes que retirar de la expresión regular esa parte. Si quieres que tampoco valide espacios en blanco intermedio, sólo te quedaría así:
string expresion = "[a-z]?";