Winform,窗口的关闭问题,暂时短路了....

Sharpend 2013-07-25 01:10:30
有个登陆界面: FormLogin
和一个主页面: FormMain
我想在登陆后显示 FormMain并销毁 FormLogin,该如何做?

我首先这样子做,
在FormMain中,

private Form frmLogin;
public FormMain(Form f){
this.frmLogin = f;
frmLogin.Dispose();
}
//这样是不可以的.


然后我搜了一下,有人这样做:
在FormLogin中,

FormMain fMain = new FormMain();
fMain.Show();
this.Hide();
//这样是可以的.

我觉得,这样的结果,应该是在某个窗口中创建新窗口,旧窗口不能关闭.
但是我觉得应该可以关闭吧,大家说该怎么做.
因为我觉得不关闭太浪费内存了...
...全文
225 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Regan-lin 2013-07-25
  • 打赏
  • 举报
回复
看自己设计要求需要来的,如果需要就关闭,不需要就不关闭了
SocketUpEx 2013-07-25
  • 打赏
  • 举报
回复
public MainForm() { LoginForm loginForm = new LoginForm(); if (loginForm.ShowDialog() != DialogResult.OK) { Environment.Exit(0); } InitializeComponent(); }
Sharpend 2013-07-25
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
http://blog.csdn.net/wuyazhe/article/details/5642431
用多线程也好,倒还是没有想到. 不过,如果像我说的那样,在同一个线程中,旧窗口会影响,我还是不懂原因...
_小黑_ 2013-07-25
  • 打赏
  • 举报
回复
引用 3 楼 h82258652 的回复:
你应该在Main方法中写 在Application.Run之前加上 using(FormLogin fLogin=new FormLogin) { if(fLogin.ShowDialog()!=DialogResult.Ok) { Application.Exit(); } } 登陆成功则才会执行Application.Run
+1
Sharpend 2013-07-25
  • 打赏
  • 举报
回复
引用 7 楼 u010700121 的回复:
在formlogin裏面寫
public static formmain f;
//若有按鈕轉到formmain就在裏面寫
this.hide;
在formmain裏面寫
public static formlogin f1 = new formlogin();
//在formload裏面
f1.f = this;
f1.showdialog;
這樣寫的好處是可以在formmain的裏面調用formlogin的控件內容。 當然,如果你在formlogin裏面就驗證過用戶名和密碼的話可以關掉,不過萬一要引用到formlogin裏面的內容而你又關掉的話就悲催了。 再說,一個formlogin也佔用不了多少內存
按你这样,不用反过来也是行的,我都传 formLogin过来了,就可以调用它的控件...
罪人不釋之枷 2013-07-25
  • 打赏
  • 举报
回复
在formlogin裏面寫
public static formmain f;
//若有按鈕轉到formmain就在裏面寫
this.hide;
在formmain裏面寫
public static formlogin f1 = new formlogin();
//在formload裏面
f1.f = this;
f1.showdialog;
這樣寫的好處是可以在formmain的裏面調用formlogin的控件內容。 當然,如果你在formlogin裏面就驗證過用戶名和密碼的話可以關掉,不過萬一要引用到formlogin裏面的內容而你又關掉的話就悲催了。 再說,一個formlogin也佔用不了多少內存
sunyz823 2013-07-25
  • 打赏
  • 举报
回复
我個人覺得沒有必要銷毀,直接隱藏就OK FormLogin: private void btnLogin_Click(object sender,EventArgs e){ //登錄驗證成功後運行主窗口 FormMain fmParent = new FormMain(); fmParent.show(); this.Visible = false; } 這很實用且簡單
LYF610400210 2013-07-25
  • 打赏
  • 举报
回复
楼上同感。。。。。。
h82258652 2013-07-25
  • 打赏
  • 举报
回复
另外窗体和控件的构造函数最好别乱加东西,前几天被设计器坑了。最好放到Load事件里。
h82258652 2013-07-25
  • 打赏
  • 举报
回复
你应该在Main方法中写 在Application.Run之前加上 using(FormLogin fLogin=new FormLogin) { if(fLogin.ShowDialog()!=DialogResult.Ok) { Application.Exit(); } } 登陆成功则才会执行Application.Run
junkewang 2013-07-25
  • 打赏
  • 举报
回复
哇 版主来了
threenewbee 2013-07-25
  • 打赏
  • 举报
回复
http://blog.csdn.net/wuyazhe/article/details/5642431

110,580

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧