Algunas cosillas que conviene saber |
|
|
Publicado el 29/Feb/2004
Actualizado el 20/Abr/2004
- Los valores del intervalo de Forms.Timer (29/Feb/04)
- ¿Cuando se produce el evento Load de los formularios? (29/Feb/04)
- Precaución al cancelar el cierre del formulario en el evento Closing... (20/Abr/04)
Precaución al cancelar el cierre del formulario en el evento Closing (20/Abr/04)
En el evento Closing de los formularios, podemos asignar un valor a la propiedad Cancel de la variable pasada como segundo parámetro del evento, si el valor que asignamos es verdadero (True), lograremos que el formulario no se cierre. Esto está bien, si por ejemplo al usuario se le avisa de que aún hay cosas sin guardar, etc., ya que damos la oportunidad de que se cancele el cierre del formulario y se pueda continuar utilizando el programa.
Pero... (¿es que no sabes que casi siempre hay un pero?) imagínate que esa cancelación se hace sin que el usuario esté presente o pueda decidir si se debe cancelar el cierre del formulario. Este caso se dará si el sistema se está cerrando, ya que se le envía al formulario un mensaje de cierre, y por tanto se produce el evento Closing. Pero si dentro del evento se asigna el valor verdadero a la propiedad Cancel, entonces podemos encontrarnos con que el sistema operativo no se cerrará... Al menos esto es lo que pasa en Windows XP, (en otros sistemas no lo he comprobado).
Este problema es aplicable tanto a VB.NET como a C# (y me imagino que al resto de los lenguajes .NET).
Sin embargo, en las versiones de Visual Basic anteriores a punto NET, si se cancelaba el cierre de un formulario y era el sistema operativo el que hacía la petición de cierre, esa cancelación se obviaba y el formulario se cerraba, así como el sistema.
No se si esto es un bug o es por "design", pero ocurrir ocurre... así que, estás advertido.
Los valores del intervalo de Forms.Timer (29/Feb/04)
El temporizador incluido en Windows.Forms aunque no es el más preciso de los que se pueden usar en .NET, si que es el que más usuarios utilizan, por aquello de que es el que "normalmente" se agrega a un formulario, además de que es el que menos problemas de "sincronización" con los hilos (threads) produce, aunque eso es otro tema...
Lo que conviene saber son los valores máximo y mínimo que podemos usar en la propiedad Interval:
El valor máximo de la propiedad Interval es 64767 milisegundos.
El valor mínimo es 1, aunque realmente es 60/18 por aquello de la precisión del temporizador usado.
¿Cuando se produce el evento Load de los formularios? (29/Feb/04)
El evento Load de los formularios se produce cuando se muestra el formulario, no solamente cuando se carga, como ocurría en las versiones anteriores de Visual Basic.
En la mayoría de los casos, este pequeño "detalle" no nos supondrá ningún inconveniente, pero en ocasiones que la asignación de una propiedad, o de una propiedad de sus controles, puede ser que nos interese que se asigne después de que se haya producido ese evento.
Por ejemplo, si en el evento Load llenamos el contenido de un control box y queremos que cuando se muestre el formulario esté seleccionado uno de los elementos, (que no sea el primero), seguramente no obtendremos el resultado deseado.
Para solucionar este "problemilla", ese "relleno" del control combo lo podemos hacer en el constructor del formulario, justo después de la llamada a InitializeComponent().