Los programadores que han trabajado con VB6 tienden a poner un montón de código en el evento Load, en VB6 ese evento se utilizó para inicializar el formulario. Pero eso ya no es apropiado en Windows Forms, la clase Form puede tener un constructor. La forma .NET es inicializar objetos de clase en el constructor, hay muy pocos motivos convincentes para no hacerlo para la clase Form.
El evento Load se ejecuta justo después de que se creó el identificador de ventana para el formulario, justo antes de que sea visible para el usuario. Solo debe escribir código en el controlador de eventos que depende de que se cree el identificador. No hay una carga de código que califique para este requisito excepto un tipo: código que requiere que se conozca el tamaño y la ubicación de la ventana.
Los valores de propiedades de Tamaño y Ubicación de un Formulario en tiempo de diseño no son los mismos que sus valores reales cuando el formulario se ejecuta en otra máquina. El formulario puede obtener una nueva escala para acomodar el tamaño de fuente del sistema o la configuración DPI del adaptador de video en la máquina de destino. Las preferencias del usuario juegan un papel también, el usuario puede haber seleccionado un tamaño de fuente diferente para el título de la ventana. Por lo general, no se preocupa por nada de esto, a menos que desee que la ventana tenga una posición particular en el escritorio o que esté alineada con alguna otra ventana.
Escribir código en el evento Load que hace cosas como inicializar los controles TreeView o ListView realmente puede ralentizar drásticamente el tiempo de inicio. Cuando lo haces en el constructor, Windows Forms no tiene que actualizar la ventana física todavía, aún no se ha creado. Una vez que se crea el control nativo, Winforms lo inicializa con una actualización masiva en lugar de un nodo/elemento a la vez, como ocurrirá cuando el código se ejecute en el evento Load. Gran diferencia.
Por último pero no menos importante: nunca debe usar el evento Load, debe anular el método OnLoad().Esto garantiza que el código se ejecuta en un orden predecible cuando usted (u otra persona) hereda de su clase de formulario. IntelliSense le ayuda a escribir este método, solo escriba "onl protegido" y presione tab para que IntelliSense complete automáticamente el método. Tenga en cuenta cómo puede elegir poner el código antes o después de la llamada base.OnLoad(), así es como controla quién es el jefe. Eres el jefe cuando lo pones, por lo general no es la elección correcta por cierto.
Una tercera posibilidad es el evento Mostrado. He encontrado que algunas cosas como "this.Activate();", "this.BringToFront();" y "this.Focus();" tener una mejor oportunidad de trabajar allí que en el evento FormLoad. – RenniePet
Posible duplicado de [Winforms Form Constructor vs Load event] (http://stackoverflow.com/questions/264396/winforms-form-constructor-vs-load-event) –
ver también https://stackoverflow.com/questions/ 3670806/form-load-event-or-override-onload – DaveInCaz