也许这是一个非常愚蠢的问题,但我无法关闭表格。
这就是我要做的事情: 启动主表单 - >打开第二种形式 - >打开第三个表格并关闭第二个表格..
我使用此代码打开第二种形式:
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)创建一个全屏截屏,在第三种形式你可以选择一个区域。
第二种形式和第三种形式没有边框并且最大化。
答案 0 :(得分:2)
您要为两个单独的表单创建两个单独的引用:p
和pauze
。要关闭原始表单,您需要保留引用并在其上调用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()
你的代码中的。它在我的应用程序中工作就好了。 :)