J'ai un formulaire Windows .NET 3.5 que j'aimerais intégrer dans un autre formulaire. Existe-t-il un moyen rapide de transformer ce formulaire en contrôle?.NET: Comment convertir un formulaire Windows en un contrôle Windows
Merci
J'ai un formulaire Windows .NET 3.5 que j'aimerais intégrer dans un autre formulaire. Existe-t-il un moyen rapide de transformer ce formulaire en contrôle?.NET: Comment convertir un formulaire Windows en un contrôle Windows
Merci
Changer la forme d'hériter de UserControl au lieu du formulaire, puis fixer une compilation des erreurs.
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!
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.
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.
Je viens de trouver cette réponse en abordant moi-même le même problème. Impressionnant comme c'est facile. –
Comment ferais-je cela dans VB.NET? Le formulaire est simplement déclaré comme Public Class TimeSheetGrid, sans explicitement 'Inherits'. – ProfK
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! –