无法从其他表单关闭表单

时间:2014-03-08 20:55:39

标签: c# forms hide

也许这是一个非常愚蠢的问题,但我无法关闭表格。

这就是我要做的事情: 启动主表单 - >打开第二种形式 - >打开第三个表格并关闭第二个表格..

我使用此代码打开第二种形式:

this.Hide();
System.Threading.Thread.Sleep(200);
pauzescreen p = new pauzescreen();
p.Show();

我使用此代码打开第三种形式:

this.WindowState = FormWindowState.Maximized;
Form1 form1 = new Form1();
form1.TopMost = true;
form1.Show();
form1.Activate();

然后我用这段代码关闭第二个表单:(这是问题,这不起作用..)

pauzescreen pauze = new pauzescreen();
pauze.Hide();

不能很好地解释它,但它的作用是在第二种形式(Pauzeform)创建一个全屏截屏,在第三种形式你可以选择一个区域。

第二种形式和第三种形式没有边框并且最大化。

3 个答案:

答案 0 :(得分:2)

您要为两个单独的表单创建两个单独的引用:ppauze。要关闭原始表单,您需要保留引用并在其上调用Close()Hide()

pauzescreen p = new pauzescreen();
p.Show();

// other stuff

p.Hide();

答案 1 :(得分:0)

正如Sid指出的,主要问题是你在写作时正在创建第二个表单的新实例

pauzescreen p = new pauzescreen();

当你试图在与你的表单实例化不同的代码的一部分中关闭它时,一个适合的解决方案,而不是处理事件,是通过将它作为参数传递给类来保持对象的引用或尝试关闭的方法。

Here是一个如何在两个不同的类中使用同一个对象的示例。

答案 2 :(得分:0)

我有一个multiform应用程序,我非常喜欢使用Program类。

static class Program
{
    // declare the forms in the program member space
    static Form1 firstForm;
    static Form2 secondForm;
    static Form3 thirdForm;
}

我所做的是在Main方法中,初始化表单。

static void Main()
{
    firstForm = new Form1()
    // ... so on and so forth
}

然后,只要您想显示或隐藏这些表单,请使用

// To hide a form, use its Hide method
Program.firstForm.Hide()

// To show a form, use its Show method
Program.secondForm.Show()
你的代码中的

。它在我的应用程序中工作就好了。 :)