web-dev-qa-db-fra.com

Comment charger un formulaire à l'intérieur du panneau, un autre formulaire dans l'application win

Je crée une application Windows Forms avec C #.

J'ai un formulaire général et un panneau dessus.

Je montre le sous-formulaire dans ce panneau avec le code:

SubForm objForm= SubForm.InstanceForm();
this.IsMdiContainer = true;
objForm.TopLevel = false;
pnlSubSystem.Controls.Add(objForm);
objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
objForm.Dock = DockStyle.Fill;
objForm.Show();

maintenant je veux montrer une autre forme sur le sous-formulaire de ce panneau, mais je ne sais pas comment le faire.

20
Iraj

Je pense que votre problème résolu par ce code:

    SubForm objForm= SubForm.InstanceForm();
    objForm.TopLevel = false;
    pnlSubSystem.Controls.Add(objForm);
    objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    objForm.Dock = DockStyle.Fill;
    objForm.Show();
25
M.Mohammadi

Si je comprends bien, vous êtes très proche. Pour ajouter un autre formulaire dans subform, essayez le même code:

pnlSubSystem.Controls.Add(objForm);

use (où objForm2 est la nouvelle subForm)

SubForm objForm2 = new SubForm();
objForm.Controls.Add(objForm2); 
3
Martijn van Put

Puisque vous avez déjà obtenu la réponse, en supprimant this.IsMdiContainer = true;, votre code fonctionnerait parfaitement. Parce que la propriété IsMdiContainer modifie l'affichage et le comportement du formulaire en un formulaire MDI parent. Lorsque cette propriété est définie sur true, le formulaire affiche une zone client immergée. All MDI Les formulaires enfants affectés au formulaire parent sont affichés dans sa zone cliente.

SubForm objForm= SubForm.InstanceForm();
objForm.TopLevel = false;
pnlSubSystem.Controls.Add(objForm);
objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
objForm.Dock = DockStyle.Fill;
objForm.Show();

formulaire objForm qui servira de modèle pour les formulaires enfants. Chaque fois que vous souhaitez créer une nouvelle fenêtre enfant dans votre application, vous pouvez créer une nouvelle instance de ce modèle de formulaire et définir le premier formulaire comme formulaire parent.

//Create a new instance of the MDI child template form
SubForm objForm = new SubForm(); 
//Set parent form for the child window 
objForm.MdiParent=this; // Last ObjForm or something
//Display the child window
objForm.Show();
3

Autrement: 

objForm.TopLevel = false;
objForm.Parent = pnlSubSystem;
objForm.Show();

Ceci est ma première réponse sur Stackoverflow.

0
Alan Ackart