net - form dentro de otro form c#
¿Qué código de configuración debe ir en Constructores de formulario frente a evento Carga de formulario? (2)
Para las aplicaciones de winforms me pregunto qué código de configuración debería ir:
- Forma principal()
Opuesto a
- MainForm_Load (remitente del objeto, EventArgs e)
¿Hay alguna guía de mejores prácticas aquí?
Eche un vistazo rápido a Use Constructor en Windows Forms para garantizar una inicialización adecuada
Use el Constructor en Windows Forms para asegurarse de que la inicialización se realiza correctamente. El orden de activación del evento no es una ciencia exacta, y no siempre se puede depender del orden en que se desencadenen los eventos, independientemente de lo que hayas visto en el pasado.
....
Por esta razón, Microsoft recomienda que maneje el código de inicialización en Forms Constructor, suponiendo que no tiene una inicialización que realmente consuma tiempo que pueda obtener un corte de tiempo o hacer un DoEvents ().
Los programadores que han trabajado con VB6 tienden a poner mucho 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 Tamaño y Ubicación de tiempo de diseño de un Formulario no son los mismos que sus valores reales cuando el formulario se ejecuta en otro equipo. 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 puede realmente 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.