Pregunta

Si miro algunas clases en el marco, usando reflector, puedo ver que los formularios y los controles de usuario se hacen privados y se anidan en una clase principal.

Por ejemplo, tengo un control que utiliza un formulario emergente que es específico de ese control. Por el momento, hago que el formulario emergente amigo sea accesible. Si quisiera hacerlo de la manera marco, lo haría privado y lo anidaría en la clase de control. Sin embargo, si hago esto, ya no puedo usar el ide para diseñar el formulario y obtengo errores cuando intento compilar. Entonces, tengo 2 preguntas:

(1) ¿Microsoft hace algo en el último minuto para anidar todas las cosas en privado?

(2) ¿Es su camino la forma preferida o debo apegarme a mis amigos accesores?

¿Fue útil?

Solución

La forma anidada es mejor, porque impone la encapsulación correcta y significa que el control final terminará en un lindo paquete ordenado para su distribución. Si ninguno de los dos te preocupa, sigue haciéndolo a tu manera. Pero si desea al menos intentar anidar la clase, puede hacer algo como esto:

  1. Use el diseñador para construir su formulario anidado fuera de la clase como lo haría normalmente.
  2. Agregue un segundo formulario vacío como un formulario anidado privado como lo hacen en los ejemplos de CLR con el mismo nombre que el formulario que creó en el paso 1.
  3. Migre el código de * .designer.vb o * .designer.cs para su primer formulario al constructor para su segundo formulario. Principalmente será solo una copia / pegar grande.
  4. Elimine el formulario del paso 1. Es posible que desee conservar moviéndolo a un proyecto de biblioteca de clases separado para que pueda usarlo cuando necesite realizar cambios.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top