¿Cuál es el método correcto para validar .NET Windows Forms?

Estoy buscando en todas partes, pero no pude encontrar un buen ejemplo o texto sobre este tema.

Me gustaría comprobar, por ejemplo, la validez del nombre de usuario y la contraseña cuando un usuario presiona el botón Aceptar en un cuadro de diálogo.

¿Debo hacer esto en el evento de cierre y cancelar el cierre del cuadro de diálogo si falla la validación? O configure el DialogResult a ninguno en lugar de OK. Todos estos parecen un poco la forma incorrecta de hacerlo. También vi el Validated y Validating eventos, pero ¿no son aquellos para validar un solo control para una entrada válida?

¿Cómo puedo verificar más controles juntos cuando se presiona el botón OK y cancelar el cierre del formulario?

preguntado el 09 de enero de 11 a las 00:01

2 Respuestas

Depende de lo que estés tratando de hacer. Si desea verificar que el usuario ingresó algo que posiblemente podría ser un nombre de usuario / contraseña válido, puede usar los eventos de validación (por ejemplo, asegúrese de que sea lo suficientemente largo, etc.). Si desea verificar que el nombre de usuario / contraseña corresponde a una cuenta válida, debe esperar hasta que presionen el botón Aceptar y verifiquen las credenciales. Si son malos, puede mostrar un cuadro de mensaje (o lo que sea) y evitar que se cierre el cuadro de diálogo (DialogResult.None).

Respondido el 09 de enero de 11 a las 03:01

Básicamente eso era lo que quería hacer y DialogResult.None también funcionó, pero no estaba seguro de si esa era la forma correcta de hacerlo, ya que no me parece muy legible que un none el valor de resultado de algo en realidad cancela el diálogo. Pero supongo que no hay otras opciones. sekmet64

+1: Leí la pregunta nuevamente y se trata de "validación comercial", no de "validación de entrada", por lo que esta es la respuesta correcta. - Ladislav Mrnka

¿Pero necesita llamar a Close si falla su validación? - Ladislav Mrnka

No exactamente, quería una ventana emergente modal donde si presiono OK y el inicio de sesión es correcto, lo cierro y habilito el marco principal, y con cancelar cierro la aplicación. Si la validación falla, muestro un mensaje de error y dejo que el usuario vuelva a intentarlo. sekmet64

Cada control ofrece Validating evento. En este caso, puede implementar la validación de un solo control. De forma predeterminada, esta validación se activa cuando el control pierde el foco. En contraste con Validated evento, el controlador de este evento recibe CancelEventArgs por lo que si la validación falla, puede cancelar la operación actual (perder el enfoque).

Cuando quiera lidiar con validaciones complejas, puede configurar AutoValidate propiedad de su forma a AutoValidate.Disable. Esto deshabilitará la validación implícita (comportamiento predeterminado descrito anteriormente). En su lugar, tendrás que llamar ValidateChildren para activar la validación explícita de todos los controles secundarios.

Respondido el 09 de enero de 11 a las 03:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.