2011-06-24 13 views
6

Soy un newbiest en C# y la forma de ventana que estoy haciendo un proyecto y me encuentro con algún problema¿Cómo puedo navegar entre las formas

  1. cómo puedo navegar formas dentro de la ventana (tengo una banda de menú, al hacer clic se mostrará un ítem "Marca", entonces cuando lo haga clic, debería abrirse dentro de la ventana, no quiero algo usando el mdiparent/contenedor, tengo form1 y form2, luego puse la banda de menú en Form1, que hay alguna cosa dentro de Form1, si utilizar el MdiParent/contenedor, el Form1 contenido/cosa bloqueará el Form2)

2.i utilizan el debajo del código y el problema es que quiero cerrar el formulario1, que hago clic en "Marca" en la tira de menú ... pero ¿cómo?

public partial class Form1 : Form 
{ 
    // i put the menu strip in form1 design 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
    } 

    private void Check_Click(object sender, EventArgs e) 
    { 
     Form2 Check = new Form2(); 
     Check.Show(); 
    } 
} 

Respuesta

17

No se puede simplemente cerrar la Form1, ya que es la forma principal, pero se puede ocultar. Use this.Hide().

private void Check_Click(object sender, EventArgs e) 
{ 
    Form2 Check= new Form2(); 
    Check.Show(); 
    Hide(); 
} 

[EDIT]

No estoy seguro si esto es lo que se pide. Pero ...

Hay muchas maneras de implementar la navegación entre las formas, por ejemplo:

En Form1:

private void button1_Click(object sender, EventArgs e) 
{ 
    Form2 form2 = new Form2(); 
    form2.Tag = this; 
    form2.Show(this); 
    Hide(); 
} 

En Form2:

private void button1_Click(object sender, EventArgs e) 
{ 
    var form1 = (Form1)Tag; 
    form1.Show(); 
    Close(); 
} 
+0

sería útil si se puede decir cómo navegar de nuevo a Form1 Form2 sin crear una nueva instancia de Form1 (ya que está en modo oculto) – Coder323

+0

@ Coder323 - no me di cuenta de que esto es lo que se pide. Actualizado la respuesta. –

+0

Estoy seguro de que el asker tendría problemas para volver a la Form1, solo pensó en ayudar ... Gracias por su código ..... – Coder323

2

Creo que se debe crear controles de usuario en lugar de diferentes formas. Luego puede agregar sus controles de usuario en su panel principal de acuerdo con la selección en el menú.

Inicialmente algo parecido a continuación

this.panel.Controls.Clear(); 
this.panel.Controls.Add(new UserControl_For_Form1()); 

vez que el usuario haga clic en alguna otra selección en el menú.

this.panel.Controls.Clear(); 
this.panel.Controls.Add(new UserControl_For_Form2()); 

Si realmente desea utilizar la forma que está utilizando en este momento. El siguiente código ayudará.

Agregue una propiedad Form1 para el Form2 y analice la instancia de form1 en el Form2 con su constructor.

public partial class Form2 : Form 
    { 
     private Form1 form1; 

     public Form2(Form1 myForm) 
     { 
      InitializeComponent(); 
      form1 = myForm; 
     } 
    } 

Muestra el form2 y oculta el form1.

private void Check_Click(object sender, EventArgs e) 
{ 
    Form2 Check= new Form2(this); 
    Check.Show(); 
    Hide(); 
} 

En caso de cierre formulario2 Ahora usted puede mostrar la instancia formulario1 que está en el formulario2 y cerrar el Form2.

El uso de MDI form es otra opción para usted.

Cuestiones relacionadas