问题描述
我登录做好了就是Form1登录后会出现Form2但是怎么弄登录到Form2的时候Form1这个窗口自动关掉
解决方案
解决方案二:
From1.Close()
解决方案三:
Form1是主启动就用Hide()Form2是主启动就用Close()
解决方案四:
form1是parent,是不能close的,一旦close,form2也关闭了。form1只好hide
解决方案五:
引用3楼happywm的回复:
form1是parent,是不能close的,一旦close,form2也关闭了。form1只好hide
+
解决方案六:
form1如果是父窗体,只能隐藏了。销毁的话,子窗体也一同销毁。
解决方案七:
如果form1和form2没有任何关系,当然,可以在实例化并显示出form2后把form1释放掉。
解决方案八:
Form1如果是父窗体那只能用Hide()Form2就用Close()
解决方案九:
隐藏掉,在form2中实例化form1:Form1f1=(Form1)this.owner;f1.hide();
解决方案十:
看你的意思,你的form1就是个登陆窗口,form2才是主程序窗口吧?也许你没实现好。两种办法,你可以在main里先运行登陆窗口,通过了在往下执行,关闭Form1打开form2.二是把form2作为启动窗口,在其shown事件里显示form1.这样就不怕关闭form1了。
解决方案十一:
2楼说的对直接close了
解决方案十二:
FORM1是你的主线程。。。FORM1要是关闭的话程序就结束了。以你现在的程度给你发代码你也看不懂的。教你个最简单的方法。你在FORM1打开FORM2的代码后面加一句。。FORM1(对象).visble=false;
解决方案十三:
2楼加3楼的就可以了
解决方案十四:
如果想直接关闭的话就涉及到线程了。。给你三种方法一.当前用户点击窗体"关闭",右上角上的"X"图标时的系统消息的响应顺序是:1.系统截获用户的点击消息,可通过重载WndProc截获;2.触发窗体的FormClosing事件;3.关闭窗体,回收本窗体所占用的相应资源;二.当在程序中用this.Close()关闭窗体时,系统响应的顺序是:1.触发窗体的FormClosing事件;2.关闭窗体,回收本窗体所占用的相应资源;三.当用户关闭操作系统时,窗体响应的顺序是:1.触发窗体的FormClosing事件;2.触发窗体的SystemEvents_SessionEnding事件;3.关闭窗体,回收本窗体所占用的相应资源;因此当我们希望在点击主窗体"X"图标时,不希望程序退出,而只是最小化并隐藏窗体,则最好是通过重载WndProc,截获点击该按钮事件,实现窗体最小化,从而达到不退出主程序的目的.而不是简单的在FormClosing事件中加上e.Cancel=true;那样在关闭或注销系统时,就不能自动关闭该窗体(程序)了;经过以上分析,我们只需在窗体中加上以下代码即可:protectedoverridevoidWndProc(refMessagem){constintWM_SYSCOMMAND=0x0112;constintSC_CLOSE=0xF060;if(m.Msg==WM_SYSCOMMAND&&(int)m.WParam==SC_CLOSE){this.WindowState=FormWindowState.Minimized;this.Hide();MessageBox.Show("clickclosebutton");return;}base.WndProc(refm);}四.截获系统的关闭,注销信息只需在程序Main()函数中为主窗体添加SystemEvents_SessionEnding事件;Form1frmMain=newForm1();SystemEvents.SessionEnding+=newSessionEndingEventHandler(frmMain.SystemEvents_SessionEnding);在Form1窗体中添加如下代码,以响应关机,注销或重启事件:internalvoidSystemEvents_SessionEnding(objectsender,SessionEndingEventArgse){stringexitType=e.Reason.ToString().Trim().ToUpper();MessageBox.Show(exitType);stringmsgTitle="";stringmsgQuestion="";if(exitType.Contains("SHUTDOWN")){msgTitle="关机";msgQuestion="真的要关机吗?";}elseif(exitType.Contains("LOGOFF")){msgTitle="注销";msgQuestion="真的要注销吗?";}DialogResultresult=MessageBox.Show(msgQuestion,msgTitle,MessageBoxButtons.YesNo);e.Cancel=(result==DialogResult.No);}
解决方案十五:
引用9楼cnwin的回复:
看你的意思,你的form1就是个登陆窗口,form2才是主程序窗口吧?也许你没实现好。两种办法,你可以在main里先运行登陆窗口,通过了在往下执行,关闭Form1打开form2.二是把form2作为启动窗口,在其shown事件里显示form1.这样就不怕关闭form1了。
这样是做好的直接在Program中的main方法中搞你的东西吧
解决方案:
如果你的登录窗口是程序运行开始的窗体,干吗不在Program的Main方法内写Form1f1=newForm1();if(f1.showdialog()==dialogResult.OK){Form2.show();}Form1点击确定后并判断登录帐号密码正确后执行:this.dialogResult=DialogResult.okthis.Close()