winform窗体弹窗体的问题
来源:百度知道 编辑:UC知道 时间:2024/06/20 11:26:39
private void btnOK_Click(object sender, EventArgs e)
{
FrmMain frm = new FrmMain(this);
this.Hide();
frm.Show();
}
可能的问题
FrmMain 在 btnOK_Click 里声明,可能会造成 btnOK_Click 完成后 frm 就自动被回收
加入登录窗体比较合适的作法是修改 Progrme.cs 中的 main 方法的内容
FrmLogin fmLogin = new FrmLogin();
// 在 FrmLogin 的 btnOK_Click 中,在验证成功后,加入
// this.DialogResult = DialogResult.OK;
// Close();
if(frmLogin.ShowDialog() == DialogResult.OK)
{
Application.Run(new FrmMain());
}
俨然有错,MDI窗体怎么着也得有个父窗体, 就算LOGIN是父窗体,你把它隐藏了,你让子窗体怎么显示出来, 俨然一空中楼阁.
另外, 整个程序的设计思路也是有问题的, LOGIN窗体就是登录而已,它也不能当父窗体啊.
建议:
1. 将FrmMain设为MDI父窗体的架子, 再建一个窗体,当成MDI的子窗体.
2. LOGIN的BUTTON CLICK事件中: 直接
FrmMain frm = new FrmMain();
this.Hide();
frm.Show();
3.当FrmMain点了关闭事件后,直接调用Application.exit()方法即可.
private void btnOK_Click(object sender, EventArgs e)
{
FrmMain frm = new FrmMain(this);
this.Hide();
frm.ShowDialog;
}
你可以先 frm.Show(); 然后在this.Hide();