2009-04-01 12 views

Répondre

35

Changer la forme d'hériter de UserControl au lieu du formulaire, puis fixer une compilation des erreurs.

+1

Je viens de trouver cette réponse en abordant moi-même le même problème. Impressionnant comme c'est facile. –

+0

Comment ferais-je cela dans VB.NET? Le formulaire est simplement déclaré comme Public Class TimeSheetGrid, sans explicitement 'Inherits'. – ProfK

+0

Dans Visual Studio 2012 (au moins) ou avec les formulaires relativement simples que j'ai essayés, cela rend le code utilisable mais vous ne pouvez pas ouvrir le contrôle dans le concepteur VS. Pas d'erreurs, mais lorsque vous ouvrez le concepteur vous montre simplement une liste de tous les éléments de contrôle, similaire à la façon dont il le fait pour les éléments de dialogue de fichier/etc. mais vous ne voyez aucune disposition de contrôle. Si quelqu'un sait comment résoudre ce problème, dites-le! –

8

Il y a aussi un moyen d'intégrer un formulaire dans un contrôle: Voici le code 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 

Je pense que j'ai acquis ce code d'un autre poste sur le SO, mais je ne sais plus où, si désolé si c'est votre extrait de code!

+0

La même chose fonctionne en C#, évidemment. – GWLlosa

+1

Je pense que vous devrez changer certaines choses pour que cela fonctionne en C#, sinon le compilateur serait en colère ... – Joey

0

En ne disant pas que vous devriez le faire maintenant, mais dans l'avenir, vous pouvez jeter un oeil à MEF. C'est un cadre pour (entre autres choses) la construction d'applications composites dont il semble que ce soit ce que vous essayez d'atteindre.

0

J'ai utilisé la solution @Neil Barnwell, avec un ajout. J'ai effectué manuellement le fichier .vbprog et changé « la SubType » du formulaire « UserControl »:

<SubType>UserControl</SubType> 

Cela permet à l'icône dans l'explorateur de projet pour montrer comme un contrôle utilisateur, plutôt qu'une forme.

Questions connexes