Impedir el cambiar de pestaña en un TabControl

Tengo la costumbre, inculcada por un profesor, de que, en una aplicación con acceso a datos, cuando se ven los datos no se pueden modificar y cuando estamos modificándolos (altas, edición) sólo podemos modificarlos (nada de abrir otra ventana, nada de cambiar de registro…). Estoy haciendo ahora una aplicacioncilla para el trabajo donde he preferido usar un único formulario que muestra los datos en distintas pestañas de un TabControl. De momento, clientes en una pestaña y las visitas de nuestros comerciales a esos clientes en otra pestaña (el resto, con calma). Así pues, y aplicando la filosofía antes mencionada (que se resumen en “el usuario es un manazas”), la idea es que el usuario no pueda cambiar de pestaña si está añadiendo o modificando un cliente o una visita.

En un principio pensé en hacerlo controlando el evento SelectedIndexChanged, pero no queda bien: se produce un molesto parpadeo cuando cambiamos de pestaña y el programa nos vuelve a mandar a la que estábamos. Así que me puse a revisar otros eventos que pudieran servir y encontré Selecting. De la referencia de Visual Studio:

“Se produce antes de que se seleccione una ficha, permitiendo que un controlador cancele el cambio de ficha.”

Efectivamente, sólo hay que indicar un e.Cancel = True para impedir el cambio de pestaña. En mi caso, si no estoy en modo “Ver Datos”, impido este cambio.

En fin, por lo menos he sacado algo útil en el día de hoy. Estoy tan espeso que casi todo el día llevo arreglando destrozos que yo mismo he hecho en partes que ya funcionaban.

11 pensamientos en “Impedir el cambiar de pestaña en un TabControl

  1. Moises

    Cuate, mis respetos. Me has salvado.

    Yo = tengo mi aplicación con un tab, y para evitar moverse usaba el molesto parpadeo.

    Gracias!!!

  2. Pingback: Impedir cambiar de pestaña en un TabControl « Recopilación de mis mejores problemas y soluciones con VB .Net

  3. Cubano Autor

    No termino de entender la pregunta, Mauricio. Las funciones Insert, Update y Delete devuelven el número de filas afectadas, con lo que si sabes qué quieres guardar es fácil comprobar si se ha guardado todo. Luego están las mil y una excepciones que se producirán en caso de error, infracciones de claves, errores de concurrencia…

Deja un comentario