winform里只有一个主窗体叫frmMain,我在一个叫打开的button的单击事件下面写有以下代码:
private void button1_Click(object sender, EventArgs e)
{
frmMain frm = new frmMain();
frm.Text = "第二个窗体";
frm.Show();
}
我现在想要关闭frmMain窗体而留下“第二个窗体”,请问高手们,这样要怎样才能做到?
private void button1_Click(object sender, EventArgs e)
{
frmMain frm = new frmMain();
frm.Text = "第二个窗体";
frm.Show();
}
我现在想要关闭frmMain窗体而留下“第二个窗体”,请问高手们,这样要怎样才能做到?
你完全可以自己建立事件循环,直到所有窗口都关闭,才退出应用程序,
(只不过App.run(form)这是个便利函数,微软自动替你建立了事件循环,直到你关掉那个窗口)
详情参考MSDN:
http://msdn.microsoft.com/zh-cn/library/ms157901.aspx
http://blog.csdn.net/wuyazhe/article/details/5642431
宣告在
private void button1_Click(object sender, EventArgs e)
之外
private void button1_Click(object sender, EventArgs e)
{ frm.Text = "第二个窗体 ";
frm.Show();
}
private void button1_Click(object sender, EventArgs e)
{
frmMain frm = new frmMain();
frm.Text = "第二个窗体 ";
frm.Show();
this.Hidden();//隐藏主窗体(button1要在主窗体上)
}
private void button1_Click(object sender, EventArgs e)
{
frmMain frm = new frmMain();
frm.Text = "第二个窗体 ";
frm.Show();
this.Hidden();//隐藏主窗体(button1要在主窗体上)
}
{
FrmMain frm = new FrmMain();
frm.Text = "第二个窗体 ";
frm.Show();
this.Visible=false;
}
应该使用this.Visible=false;
第一个Form的Button Click
private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;//关闭当前Form
}
在Program中:
frmMain frm = new frmMain();
using (Form1 frm1 = new Form1())
{
DialogResult dr= frm1.ShowDialog();
if (dr.Equals(DialogResult.OK)) //如果第一个窗口按了Button
{
Application.Run(new frmMain()); //启动第二个窗口
}
}
这样处理存在一个风险,就是但你关闭非主Form的所有其它Form时,因为主Form不可见,会误认为程序已经关闭,其实还没有,所以需要在非主Form的关闭事件中加入关闭整个应用程序的代码。
new Thread((ThreadStart)delegate
{
Application.Run(new Form1());
}).Start();
this.Close();
隐藏有hide方法,或者设置visable为false。
frmMain frmM = new frmMain();//第二次窗体
this.Hide();
if (frmM.ShowDialog() != DialogResult.OK)//打开第二个窗体,同时捕捉到第二个窗体关闭时的状态
{
Environment.Exit(Environment.ExitCode);//如果第二个窗体光笔,则关闭整个程序进程。
return;
}第二个窗体不需要些任何代码。
在program 中改为:Application.Run(new form2());
在form2中改为
public Form2()
{
InitializeComponent();
this.hide();
frmMain frm = new frmMain();
frm.show();
}在frmMain 中关闭时再将Form2显示