Herencia de Windows Form

Quiero crear un montón de formularios que tengan todas las mismas propiedades e inicializar las propiedades en el constructor de formularios asignando los parámetros del constructor.

Intenté crear una clase que hereda de la forma y luego heredar todas mis formas de esa clase, pero creo que, como no podía llamar a InitializeComponent (), estaba teniendo algunos problemas.

¿Cuál es un código C # sobre cómo hacer esto?

El InitializeComponent los padres debe llamarse haciendo que su constructor llame a base() esta manera:

 public YourFormName() : base() { // ... } 

(Su formulario padre debe tener una llamada a InitializeComponent en su constructor. Usted no sacó eso, ¿verdad?)

Sin embargo, el camino que está siguiendo no es el que jugará bien con el diseñador, ya que no podrá hacerlo para crear una instancia de su formulario en el momento del diseño con esos parámetros (tendrá que proporcionar un constructor sin parámetros para que funcione). También se encontrará con problemas en los que asigna propiedades principales por segunda vez, o las asigna para que sean diferentes de las que podría haber deseado si usa su constructor parametrizado en el código.

Quédate con solo tener las propiedades en el formulario en lugar de usar un constructor con parámetros. Para las formas, tendrás un dolor de cabeza.

Un patrón alternativo de la herencia aquí sería utilizar una fábrica para crear los formularios. De esta manera su fábrica puede configurar todas las propiedades.

Cree una interfaz y pásela al constructor del formulario.

 interface IFormInterface { //Define Properties here } public MyForm(IFormInterface AClass) { //Set Properties here using AClass } 

Aunque normalmente estoy haciendo algo más que establecer propiedades cuando quiero hacer algo como esto, así que termino creando una clase abstracta para los comportamientos predeterminados.