如何关闭已打开的子窗体?
我想完成以下的功能:
有一个父窗体frmMain,两个子窗体frmS,frmW.程序启动时frmS以在父窗体中以最大化的形式显示。我想在父窗体中加一个BUTTON1,当击这个BUTTON1后frmS关闭,frmW显示;然后在frmW中建一个BUTTON2,点这个按钮后,frmW退出,frmW重新载入!
这个具体怎么实现呀?能不能给出关键的代码和思路?
[解决办法]
button1.click
foreach (Form childForm in MdiChildren)
{
if(childForm.Name=="frmS")
{
childForm.Close();
frmW f=new frmW();
f.MdiParent = this;
f.Show();
}
}
然后在frmW中建一个BUTTON2,点这个按钮后,frmW退出,frmW重新载入! ???
关了从新载入????
[解决办法]
frmW退出,frmW重新载入!????
是不是frmS重新载入啊,写错了吧!
[解决办法]
- C# code
/* -----------frmMian----------- */private frmS fs = null;private frmW fw = null;private void button1_Click(object sender, EventArgs e){ frmS f = new frmS(); fs = f; f.Show(); frmW ff = new frmW(); fw = ff; ff.Show();}private void button3_Click(object sender, EventArgs e){ if (fs != null) { fs.Close(); fs = null; }}/* --------frmW------- */private frmS fs = null;private void button1_Click(object sender, EventArgs e){ frmS f = new frmS(); fs = f; f.Show(); this.Close();}
[解决办法]
private void frmMain_Load(object sender, EventArgs e)
{
frmS fs = new frmS();
fs.MaximizeBox = true;
fs.MdiParent = this;
fs.Show();
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
frmW fw = new frmW();
fw.MdiParent = this.MdiParent ;
fw.Show();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
frmS fs = new frmS();
fs.MdiParent = this.MdiParent ;
fs.Show();
}
[解决办法]
我的这个可以通过,而且可以防止打开多个窗体,如果已经打开,就激活他
- C# code
public partial class frmMain : Form { public frmMain() { InitializeComponent(); } private void 登录ToolStripMenuItem_Click(object sender, EventArgs e) { foreach (Form form in Application.OpenForms) { if (form.Name == "frmLogin") { form.Activate(); form.WindowState = FormWindowState.Maximized; return; } } frmLogin login = new frmLogin(); login.MdiParent = this; login.WindowState = FormWindowState.Maximized; login.Show(); } private void 日志ToolStripMenuItem_Click(object sender, EventArgs e) { foreach (Form form in Application.OpenForms) { if (form.Text == "frmLogInfo") { form.Activate(); return; } } frmLogInfo log = new frmLogInfo(); log.MdiParent = this; log.WindowState = FormWindowState.Maximized; log.Show(); } private void frmMain_Load(object sender, EventArgs e) { frmLogin login = new frmLogin(); login.WindowState = FormWindowState.Maximized; login.MdiParent = this; login.Show(); } }