2008-11-05 25 views
9

Cuando se carga un formulario, el código debe hacer cosas como configurar datagrids, comboboxes, establecer el título, etc. He tendido a utilizar siempre el evento de carga en lugar del nuevo (constructor). ¿Hay alguna guía para cuál es mejor para qué actividades?Winforms Form Constructor vs Load event

+0

Posible duplicado de [¿Qué código de configuración debería ir en Form Constructors versus Form Load event?] (Http://stackoverflow.com/questions/2521322/what-setup-code-should-go-in-form-constructors- versus-form-load-event) –

Respuesta

0

Básicamente, usted quiere que su constructor sea lo más ligero posible. Intento poner la mayoría de las cosas en el controlador de eventos Load a medida que los elementos de la interfaz de usuario se han creado y se pueden usar en este momento. Sin embargo, suelo crear instancias de objetos de clase, etc. en el constructor, ya que en realidad es parte de la construcción del objeto. A veces no puedes poner las cosas en un lugar u otro, pero para cuando puedas, debes ponerlas donde te parezca más apropiado.

+0

Lea aquí por qué lo contrario es mejor: http://stackoverflow.com/a/2522999/4136325 –

2

Una llamada a InitializeComponent se inserta automáticamente en el constructor de su formulario/página. InitializeComponent es el método autogenerado que

  • crea los diversos elementos de la interfaz en su página/XAML WinForm
  • inicializa sus propiedades con los valores almacenados en el archivo de recursos

Así que todo lo relacionado con la interfaz de usuario los arreglos/modificaciones deben ir al después de esta llamada. Cuando haces esto en una modificación de Form.OnLoad, tienes la seguridad de que la interfaz de usuario está lista para funcionar (se ha llamado a InitializeComponent) ... así que votaría por adherirme a OnLoad para la interfaz de usuario.
Creando miembros que no sean UI, el constructor sería el lugar que primero miraría.

1

Tenga en cuenta que cualquier cosa en el constructor de un formulario se creará/ejecutará en esa creación de formularios. es decir, a:

Forma frm = new Form();

Considerando que cualquier cosa en el evento de carga se producirá solo cuando el formulario es se muestra es decir frm.Show();

+0

Tenga en cuenta que también hay un evento Mostrado. El evento de carga ocurre antes de que se muestre el formulario, pero cuando la ventana existe y el diseño se ha realizado. –

Cuestiones relacionadas