revenir à la forme précédente (c #)

Je sais comment accéder à un autre formulaire en mode modal, comme ce que j’ai fait ci-dessous:

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

Ceci est mon deuxième formulaire, comment puis-je revenir au formulaire précédent?

 public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { this.Hide(); // what should i put here to show form1 again } } 

Lorsque vous appelez ShowDialog sur un formulaire, celui-ci s’exécute jusqu’à ce que le formulaire soit fermé, que la propriété DialogResult du DialogResult soit définie sur un paramètre autre que None , ou qu’un bouton enfant avec une propriété DialogResult autre que None soit sélectionné. Pour que vous puissiez faire quelque chose comme

 public partial class Form1 { ... private void button1_Click(object sender, EventArgs e) { this.Hide(); newform.ShowDialog(); // We get here when newform's DialogResult gets set this.Show(); } } public partial class Form2 { ... private void button1_Click(object sender, EventArgs e) { // This hides the form, and causes ShowDialog() to return in your Form1 this.DialogResult = DialogResult.OK; } } 

Bien que si vous ne faites rien d’autre que revenir du formulaire lorsque vous cliquez sur le bouton, vous pouvez simplement définir la propriété DialogResult sur Form2.button1 dans le concepteur de formulaire, sans avoir besoin d’un gestionnaire d’événement dans Form2.

J’utilise une valeur de formulaire statique Current dans toutes mes applications de formulaire multiples.

 public static Form1 Current; public Form1() { Current = this; // ... rest of constructor } 

Puis dans Form2

 public static Form2 Current; public Form2() { Current = this; // ... rest of constructor } 

Ensuite, vous pouvez, à partir de votre bouton, cliquer sur,

 private void button1_Click(object sender, EventArgs e) { this.Hide(); // what should i put here to show form1 again Form1.Current.ShowDialog(); // <-- this }