2011-06-19 28 views
7

Tengo un código que comprueba y se asegura de que cuando los usuarios entren en el campo se deba ingresar un número entero del 1 al 10.C# - Validación del cuadro de texto

Aunque si los usuarios toman el foco del campo, los datos "malos" (como "fdgfdg") todavía se quedan en el campo. Por lo tanto, algunos podrían demostrar cómo se pierde el enfoque en el campo; si los datos no son válidos, se ingresará un valor predeterminado, por ejemplo, 5

private void textBox4_TextChanged(object sender, EventArgs e) 
     { 
      try 
      { 
       int numberEntered = int.Parse(textBox4.Text); 
       if (numberEntered < 1 || numberEntered > 10) 
       { 
        MessageBox.Show("You must enter a number between 1 and 10"); 
       } 
      } 
      catch (FormatException) 
      { 

       MessageBox.Show("You need to enter an integer"); 
      } 
     } 
+1

@Gats: Se trata de la aplicación de escritorio de Windows Forms ... –

+0

Esto no es winforms una página web. –

+1

@Gats: incluso si se tratara de una aplicación web, la validación del lado del servidor es obligatoria. La validación del lado del cliente debe ser una adición conveniente a la validación del lado del servidor. –

Respuesta

14

Hay varios eventos que se pueden utilizar aquí, Leave, LostFocus y Validating hay más discusión de estos diversos eventos en MSDN here.

En determinadas situaciones el Leave y la LostFocus no se disparará por lo que la mejor manera de utilizar en su caso es la Validating evento:

textBox1.Validating += new CancelEventHandler(textBox1_Validating); 


    void textBox1_Validating(object sender, CancelEventArgs e) 
    { 
     int numberEntered; 

     if (int.TryParse(textBox1.Text, out numberEntered)) 
     { 
      if (numberEntered < 1 || numberEntered > 10) 
      { 
       MessageBox.Show("You have to enter a number between 1 and 10"); 
       textBox1.Text = 5.ToString(); 
      } 
     } 
     else 
     { 
      MessageBox.Show("You need to enter an integer"); 
      textBox1.Text = 5.ToString(); 
     } 
    } 
+0

Gracias, ese es un excelente ejemplo – Jay

0

si usted es la validación como se hace aquí para liar, todo lo que necesita hacer es fijar el valor por defecto después de que MessageBox.Show()

en winforms estándar no creo que ningún apoyo de marco para la validación, pero se puede ver esto: http://msdn.microsoft.com/en-us/library/ms951078.aspx en busca de inspiración para que no dispersan esta lógica a través de su aplicación

+0

Pensamiento brillante ... :) – Jay

0

nosotros e Leave el evento en el control cuadro de texto para validar y establecer el valor por defecto

Cuestiones relacionadas