Comment travailler avec plusieurs pages ou formulaires

J’essaie de créer une fenêtre et sur cette fenêtre, j’aurais une barre d’outils avec des boutons différents.

Lorsque je clique sur l’un des boutons, il affiche quelque chose comme de l’information sur une personne ou lorsque je clique sur un autre bouton. Cela affiche d’autres informations sur les employés.

Comment puis-je faire ceci. Puis-je append des pages, puis insérer cette page sur une grid ou un panneau lorsque ce bouton l’exige?

Ou Dois-je créer plusieurs panneaux et les créer tous sur une seule fenêtre (mais si je fais cela, comment pourrais-je facilement modifier chacun de ces panneaux lorsqu’ils sont empilés les uns sur les autres dans une seule fenêtre)? J’espère que je suis clair à ce sujet, Idk comment autrement poser cette question. Toute aide est appréciée.

En outre, comment puis-je ancrer quelque chose pour qu’il se redimensionne lorsqu’il est optimisé ou minimisé?

Une façon consiste à créer un autre formulaire et à l’ouvrir à partir d’un événement de bouton:

public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Show(); } } 

Si vous voulez tout dans une fenêtre, vous pouvez créer un contrôle utilisateur et l’append à la première fenêtre:

 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { UserControl1 control = new UserControl1(); control.Dock = DockStyle.Fill; this.Controls.Add(control); } } 

Une autre option consiste à utiliser des formulaires enfants:

 public partial class Form1 : Form { public Form1() { InitializeComponent(); this.IsMdiContainer = true; } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.MdiParent = this; form2.Show(); } } 

Créez un panneau pour chaque bouton que vous avez. Alors:

 panelx.Dock = DockStyle.Fill; //this will fill the window. 

Et mettez tout ce que vous voulez montrer pour ce bouton sur ce panneau.

Lorsque vous souhaitez afficher, dites panel2 au lieu de panel1:

 panel1.Hide(); panel2.Show(); 

Comme mentionné précédemment, cela peut être réalisé en utilisant un contrôle de tabulation.

  public ParentForm() { TabControl tabcontrol1 = new TabControl(); tabcontrol1.Dock = DockStyle.Top; TabPage tab1 = new TabPage("Form1 Name"); Form1 frm1 = new Form1(); frm1.TopLevel = false; frm1.Parent = tab1; frm1.Visible = true; tabcontrol1.TabPages.Add(tab1); Form2 frm2 = new Form2(); TabPage tab2 = new TabPage("Form2 Name"); frm2.TopLevel = false; frm2.Parent = discotab; frm2.Visible = true; tabcontrol1.TabPages.Add(discotab); } 

Utilisation de contrôles utilisateur personnalisés “empilés”

  public ParentForm() { InitializeComponent(); MyUserControl1 control1 = new MyUserControl1(); control1.Dock = DockStyle.Bottom; control1.BringToFront(); } private void button1_Click(object sender, EventArgs e) { MyUserControl2 control2 = new MyUserControl2(); control2.Dock = DockStyle.Bottom; control2.BringToFront(); } 

J’ai implémenté une boîte de dialog “Options paginées” dans Windows Forms il y a quelque temps. Mon article sur ce sujet est ici: http://www.differentpla.net/content/2004/10/implementing-a-paged-options-dialog (les images manquent cependant).