【问题标题】:Hide and restore the GUI Mutiple forms in c#c#中隐藏和恢复GUI多个表单
【发布时间】:2016-12-10 22:41:24
【问题描述】:

我有多个表单申请。表格 1 是用于用户验证的登录表格。 Form1 转到 Form2(菜单形式)。表单 2 导致表单 3,它只是弹出表单,并在打开表单时隐藏表单 3。表单 3 进入表单 4。现在从表单 4,单击按钮,我需要在不创建新实例的情况下恢复表单 2。我尝试使用singelton方法,得到错误。代码如下所述。

表格1:

private void click_Click(object sender, EventArgs e)
{      
   if ((user.Text == username) && (pswd.Text == password))       
   {
      Form2 menu = new Form2();
      menu.Username = user.Text;
      //hides the form1
      this.Hide();      
      menu.ShowDialog();
   }
}

表格2:

private static Form2 instance;

public static Form2 Instance
{
   get
   {
      if (instance == null)
      {
         instance = new Form2();
      }
      return instance;
   }
}

private void button_Click(object sender, EventArgs e)
{
   //Hide the form2
   Hide();
   //Bring up your PopUp form
   using (Form3 form3 = new Form3())
   form3.ShowDialog();         
}

Form3:

private void button_Click(object sender, EventArgs e)   
{
   Hide();
   Form4 form4 = new Form4();
   form4.Show();
}

Form4:

private void button1_Click(object sender, EventArgs e)
{
   Form2 form2 = Form2.Instance;//error occured as Mainmenu does not contain a reference for Instance and no extension method accepting a first argument of type 'Mainmenu'
}

基本上,我想恢复被隐藏的 Form2。任何帮助将不胜感激!谢谢

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    如何跟踪表单父级以便您可以直接访问。 例如在您的 Form1 中:

    menu.Parent = this;
    Hide();
    menu.ShowDialog();
    

    然后在 Form2 中调用 Form3:

    using (Form3 f3 = new Form3())
    {
        Hide();
        f3.Parent = this.Parent;
        f3.ShowDialog();
    }
    

    那么当你要处理Form3时:

    this.Parent.Show();
    this.Parent.Focus();
    this.Dispose();
    

    根据您的需要,为尽可能多的开放表单提供类似的东西。如果您需要退回到以前的表单,则将 Parent 设为“this”而不是“this.Parent”

    【讨论】:

    • 它适用于我的应用程序。管理多个表单有点棘手,因为我的应用程序往往会变得更大。我会按照您建议的方式处理多个表单。谢谢!
    • 您也可以将所有表单声明为全局变量,但在不了解项目细节的情况下,很难说出处理它们的最佳方法是什么。当方法可以简化时,您是否可能尝试实现过多的表单?只是要考虑的事情。希望一切顺利!
    • 我是 C# 编程新手。我正在通过从服务器获取灯光并控制它来创建用户界面应用程序来控制建筑物中的灯光(智能控制)。我广泛使用表格,现在难以管理它们。请就如何改进管理它们提出建议。如果可能,请提供示例代码。
    • 您目前使用什么表格?考虑一下您希望它如何布局以供用户访问。 Tab 控件会有帮助吗?你真的需要和你使用的一样多的表格,还是弹出对话框足以回答问题?如果您想压缩您当前拥有的文件并发布链接,我会为您查看它们。
    • 创建一个 MDI 应用程序并隐藏 mdi 父级,但是为每个表单创建变量并根据需要调用它们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 2018-04-01
    相关资源
    最近更新 更多