2009-08-29 5 views
6

Je souhaite ouvrir plusieurs instances d'un formulaire et l'afficher dans un autre formulaire ou dans un formulaire d'un autre formulaire. comment le faireC# Winform Formulaires sous forme

Répondre

18

Si vous n'utilisez pas MDI, vous pouvez toujours ajouter un formulaire à un autre formulaire ou à un panneau d'un formulaire.

public Form1() 
{ 
    InitializeComponent(); 

    Form2 embeddedForm = new Form2(); 
    embeddedForm.TopLevel = false; 
    Controls.Add(embeddedForm); 
    embeddedForm.Show(); 
} 

Vous devrez régler le FormBorderStyle-None, sauf si vous voulez avoir une forme mobile réelle à l'intérieur de votre forme.

Si vous voulez faire cela pour créer un "modèle" réutilisable à utiliser dans plusieurs formulaires, vous devriez envisager de créer un contrôle utilisateur à la place. Ne pas être confondu avec un contrôle personnalisé, qui est destiné à lorsque vous devez faire votre propre dessin au lieu d'utiliser des collections de contrôles Windows standard. Je ne suis pas entièrement sûr de vos intentions, mais MDI (comme mentionné dans l'une des autres réponses) pourrait être ce que vous cherchez.

+0

quelle est la différence si j'utilise votre méthode ou la réponse dans la méthode suivante – Moon

+0

et si je veux mettre ce formulaire dans un panneau du parent MDI – Moon

+0

Je l'ai fait toute la journée dans Delphi puisque nous n'avions pas le contrôle de l'utilisateur. J'utilise les contrôles utilisateur maintenant jours en C#, car il semble être l'équivalent fondamentalement. Avec cette approche, les événements Form_Load principaux et incorporés sont-ils activés? – Steve

1
Form1 fChild = new Form1(); 
fChild.MdiParent = this; 
fChild.Show(); 

Et le IsMDIContainer du parent doit être réglé sur True.

Pour un tutoriel complet, vous pouvez vous référer à: Introduction to MDI Forms with C# @ CodeProject.

+0

et si je veux mettre ce formulaire dans un panneau du parent MDI – Moon

4

Vous devez:

1) Choisissez MDI, cela signifie accepter le style complet MDI pour votre GUI

ou

2) Non imbriquer les formes du tout, il est préférable (et plus facile) utiliser UserControls. Essayez-les avant de faire un choix. Si vous utilisez des formulaires, assurez-vous que les touches de raccourci, etc. fonctionnent comme vous le souhaitez.

Intro courte: Vous concevez un UserControl comme un formulaire et le placez ensuite sur un formulaire comme n'importe quel autre contrôle.

+1

UserControls est une méthode fantastique pour encourager la réutilisation de code lorsque MDI est soit trop ou pas un design acceptable pour le formulaire. –

0

Je suis tombé sur cet ancien fil à la recherche de quelque chose de similaire. Dans le cas où quelqu'un d'autre cherche - j'ai utilisé Ajouter un nouvel élément> Windows Forms> Inherited Form. Il vous permet de choisir un formulaire à intégrer comme point de départ pour un autre formulaire. Ce fut était dans VS 2015 Community Edition.

+0

** Clarification **: ce n'est pas * incorporer * un formulaire, c'est ** sous-classer ** un formulaire. Peut être utile pour des situations simples. Plus précisément, vous pouvez utiliser ** docking ** pour attacher plus de contrôles à l'un des 4 côtés du formulaire d'origine - SI il n'utilise pas déjà l'ancrage.Sinon, je pense que tout ce que vous pouvez faire est d'étendre la largeur et la hauteur, et commencer à ajouter des contrôles à la droite et au bas des contrôles du formulaire parent. Le problème est que si le formulaire parent change, de sorte que sa largeur et sa hauteur sont modifiées, il peut être difficile de tout déplacer dans votre formulaire de sous-classe. – ToolmakerSteve

Questions connexes