2009-04-01 21 views

Respuesta

35

Cambiar la forma de heredar de control de usuario en lugar del Formulario, a continuación, fijar cualquier errores de compilación.

+1

Acabo de encontrar esta respuesta al abordar este mismo problema yo mismo. Impresionante qué fácil es eso. –

+0

¿Cómo haría esto en VB.NET? El formulario simplemente se declara como 'Public Class TimeSheetGrid', sin explícita' Inherits'. – ProfK

+0

En Visual Studio 2012 (al menos) o con las formas relativamente simples que he probado, hacer esto hace que el código sea utilizable pero no puede abrir el control en el diseñador VS. No hay errores, pero cuando abre el diseñador, simplemente le muestra una lista de todos los elementos de control, similar a cómo lo hace para elementos de diálogo de archivo/etc. pero no ves el diseño de control. Si alguien sabe cómo arreglar eso, ¡cuéntalo! –

8

Hay también una manera de incrustar un formulario en un control: Aquí está el código en VB:

Public Shared Sub ShowFormInControl(ByRef ctl As Control, ByRef frm As Form) 
    If ctl IsNot Nothing AndAlso frm IsNot Nothing Then 
     frm.TopLevel = False 
     frm.FormBorderStyle = FormBorderStyle.None 
     frm.Dock = DockStyle.Fill 
     frm.Visible = True 
     ctl.Controls.Add(frm) 
    End If 
End Sub 

Creo que ha adquirido este código de otro mensaje el SO, pero no puedo recordar dónde, por lo lo siento si este es su fragmento de código!

+0

Lo mismo funciona en C#, obviamente. – GWLlosa

+1

Creo que tendrías que cambiar algunas cosas para que funcione en C#, de lo contrario el compilador estaría enojado ... – Joey

0

No dice que deba hacer esto ahora, pero en el futuro puede echar un vistazo al MEF. Es un marco para (entre otras cosas) construir aplicaciones compuestas que parece que podría ser lo que estás tratando de lograr.

0

Utilicé la solución de @Neil Barnwell, con una adición. he editado manualmente el archivo .vbprog y cambiaron "subtipos" de la forma de "control de usuario":

<SubType>UserControl</SubType> 

Esto permite que el icono en el Explorador de proyectos para mostrar como un control de usuario, en lugar de una forma.

Cuestiones relacionadas