2008-09-09 10 views
6

Quiero cargar una aplicación de escritorio, mediante reflejo, como un control dentro de otra aplicación.¿Se puede cargar un formulario .Net como control?

La aplicación que estoy reflejando es heredada, no puedo hacer cambios en ella.

Puedo acceder dinámicamente al formulario, pero no puedo cargarlo como control.

En .NET Form amplía Control, y puedo asignar el formulario reflejado como control, pero arroja una excepción en tiempo de ejecución.

Las formas no se pueden cargar como controles.

¿Hay alguna forma de convertir el formulario a un control?

Respuesta

10

Sí, esto funciona bien. Estoy trabajando en una aplicación .NET ahora que carga formularios en un panel en un formulario de host.

El fragmento relevante:

// setup the new form 
form.TopLevel = false; 
form.FormBorderStyle = FormBorderStyle.None; 
form.Dock = DockStyle.Fill; 
form.Show (); 

// add to the panel's list of child controls 
panelFormHost.Controls.Add (form); 
+0

Probado y esto funciona. Gracias :-) – Keith

1

Usted debe ser capaz de añadir la forma a la colección controles de su formulario primario ...

Ver aquí: http://vbcity.com/forums/topic.asp?tid=30539

Si eso no funciona, intente utilizar el adapter para crear un contenedor con su formulario heredado dentro de él, ¿luego puede cargarlo en un MDI?

1

¿Cuál es la excepción se obtiene? ¿Es posible que el control mismo esté dando la excepción (frente al marco)? Tal vez se llama algo en las aplicaciones originales ¿Función principal que no se está llamando?

+0

Me estaba dando un error relacionado con la propiedad TopLevel, algo que no podría establecer en un control, pero podría en un formulario. – Keith

Cuestiones relacionadas