我是C#的新手,我正在尝试用各种函数制作一个程序来自学,如何使用C#。如果我不知道什么,我通常会看到互联网,但这让我疯狂。
我记得在一开始我开始这个我想要打开一个表格并关闭旧表格,但是当我关闭新表格时,旧表格会再次出现,以及其他奇怪的问题。 this.Hide()似乎也没有做任何事情。
目前我正在使用这个代码打开一个新表单,但感觉应该有一行代码,只需要打开一个表单就可以了。 我的问题是,如果有。
private void OpenMainForm()
{
MainForm frm2 = new MainForm();
frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed);
frm2.Show();
// Since this.Hide() for some reason doesn't work, i'll have to do this crap
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;
}
private void frm2_FormClosed(object sender, FormClosedEventArgs e)
{
this.Close();
}
答案 0 :(得分:14)
如果您想要在辅助窗口中隐藏主窗口,则应使用ShowDialog()
方法。有了它,你甚至不需要form_closed event
。
您的代码应如下所示:
private void OpenMainForm()
{
MainForm frm2 = new MainForm();
this.Hide(); //Hide the main form before showing the secondary
frm2.ShowDialog(); //Show secondary form, code execution stop until frm2 is closed
this.Show(); //When frm2 is closed, continue with the code (show main form)
}
答案 1 :(得分:4)
您也可以使用此代码:
public static void ThreadProc()
{
Form2 f;
Application.Run(new Form2());
}
private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadProc));
t.Start();
this.Close();
}
答案 2 :(得分:2)
这对我来说很完美
Form2 frm = new Form2();
frm.Show();
frm.Activate();
this.Hide();
但是如果你想从Form2关闭整个应用程序......你必须在Form2的Application.Exit();
事件中添加FormClosing
答案 3 :(得分:0)
您可以隐藏旧表单,如下所示。
private void frm2_FormClosed(object sender, FormClosedEventArgs e)
{
this.Hide();
}