多表格GUI应用程序C#

时间:2016-12-09 22:40:30

标签: c#

我正在创建一个C#应用程序。我是.NET编程的新手。它基本上是一个大的Windows窗体应用程序,它显示各种形式,所有形式都基于用户控制相互关联。我的主要表单是登录页面,用于验证用户转到菜单表单(第二表单),其中有用户可以选择的选项。所以主要活动从菜单表格(第二种形式)开始,它包含一个包含用户名的标签。从菜单表单(第二种形式),它转到第三种形式,这是一种弹出形式,它导致第四种形式。基本上,移动到每个表单时隐藏第二个表单。现在从第四种形式开始,我想回到菜单表单(第二种形式)而不创建新实例。我试图在没有新实例但没有运气的情况下这样做。请参阅以下代码:

第二种形式(菜单):

private void button_Click(object sender, EventArgs e)
{ 
    PopUp form3 = new Popup(); 
    form3.Show();

    // Hides the Menu Form(second form)
    this.Hide();
} 

第三种形式:

 private void button_Click(object sender, EventArgs e)
 {      
     var menu = new Menu();
     menu.Hide();

     // Hide Form #3
     Hide();
     form4.Show();

     // Hide Form #3
     Close();
 }

第四种形式:

private void button_Click(object sender, EventArgs e)
{
    if(grpSaved == false)
    {
        Form5 form5 = new Form5();
        form5.Show();
        form5.FormClosed += new FormClosedEventHandler(unsaved_FormClosed);             
        grpSaved = true;
    }
    else
    {
        var menu = new Menu();
        Close();//closes fourth form

        menu.Show();
    }
}

此代码创建菜单表单的新实例(第二种形式)。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

在第二个表单(您的主表单)上,如果您选择一个按钮或单击复选框以访问第三个和第四个表单,请尝试使用show dialog cod代替新表单,然后将此放置.Show( );在显示对话框之后,确保当您打开的表单关闭时,它将返回到您打开它的表单。

示例:

而不是:

PopUp form3 = new Popup(); 
    form3.Show();  
    //hides the second (Menu) form
    this.Hide();

尝试:

//Hide the second form
this.Hide();
//Bring up your PopUp form
using (PopUp form3 = new PopUp())
     form3.ShowDialog();
//When your PopUp form closes the code should continue and show the second form again.
this.Show();

为了堆叠表格,请尝试以下方法:

//Menu Form
private void button_Click(object sender, EventArgs e)
{ 
this.Hide();
using(PopUp form3 = new Popup()) 
    form3.ShowDialog();
this.Show();
} 

//PopUp Form
private void button_Click(object sender, EventArgs e)
 {
  this.Hide();
  using(Task form4 = new Task())
      form4.ShowDialog();
  this.Close();      
 }

//Task Form
private void button_Click(object sender, EventArgs e)
{
  this.Close();
}

最后一个按钮只需要关闭任务表单。一旦关闭,PopUp表单上的代码将继续,这将关闭PopUp表单并返回到原始的Menu表单而不加载新表单,并在此过程中清除表单堆栈。

这是一个干净的解决方案,除了它本身并不保存其他两种形式的数据。再次单击“菜单”页面上的按钮将弹出一个新的PopUp表单。