2016-11-08 61 views
0

我试图在C#中创建一个双窗体Windows应用程序。为了简单起见,为了帮助我在别处使用它之前弄清楚它,我基本上创建了一个具有两种窗体的Windows窗体应用程序:Form1和Form2,Form1在启动时显示。在点击一个按钮,我可以让Form1“消失”和Form2:使隐藏后的启动窗体再次可见

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

而且这个工程很好。但是,当我想要返回到Form1(通过再次使其可见)并卸载Form2时,我不确定如何继续使用按钮单击以将Form2编码返回到Form1。我不确定需要引用什么来使该表单再次可见,而不必创建新的Form1并加载它,从而将我的原创启动表单留在内存中。

任何帮助你可以提供将是很棒!在此先感谢,

-Jan

+2

传递原始形式一个变量到第二个,你需要它被存储以便能够再次调用它 - 在Form2构造函数Form2(Form1 x)中,并将它作为变量存储e,那么当你想重新打开它时,你可以从Form2的变量中调用它 –

+0

可能的重复[Windows窗体在c#中旋转](http://stackoverflow.com/questions/3666604/windows-forms-spinning- in-c-sharp) –

+0

x.FormClosing + =(s,cea)=> {if(!cea.Cancel)this.Show(); };看看其他程序这样做的方式,他们很少交换窗口。使用交换其内容的单个主窗口是普通用户界面。你可以通过创建UserControl而不是Forms来达到目的。 –

回答

-1

这样做:

private void button1_Click(object sender, EventArgs e) 
    { 
     Form2 x = new Form2(); 
     this.Hide(); 
     x.ShowModal(); 
     this.Show(); 
    } 
+0

谢谢大家!这里有很多很棒的点子。非常感激! – jstdenis

1

由于阿尔菲意见建议,你需要以某种方式控制你的每个窗体的实例。

我建议一个静态类与两个变量。当您启动时,您将表单链接到静态类中的这些公共属性。

是这样的:

public static class App { 

    public static Form Form1; 
    public static Form Form2; 

} 

在启动或点击方法,你会这样说:

private void button1_Click(object sender, EventArgs e) 
{ 
    if (App.Form1 != null) 
     { 
     App.Form1 = new Form1(); 
     } 
    App.Form1.Show(); 
    App.Form2.Hide(); 
} 
+0

Ofc你会null检查所有窗体属性调用。但我相信你会得到这个嘘声。 – Christian

相关问题