WinformForms关闭和打开新窗体1.frmHomefrm=newfrmHome();frm.Show();这个。关闭();打开家庭表格。在LoginForm的form_closed事件中,我调用了Application.Exit()。这允许您打开LoginForm并通过单击X按钮退出应用程序。问题是当我从LoginForm移动到HomeForm并调用this.Close()时,LoginForm的form_closed事件触发并且应用程序关闭。我一次只能显示一种形式。您可以使用布尔值(全局变量)作为LoginForm中的退出标志,将其初始化为:exit=true;//在构造函数中,在关闭之前将其设置为false:frmHomefrm=newfrmHome();frm.Show();退出=假;这个。关闭();在form_closed中:if(exit)Application.Exit();如果用户使用“X”按钮关闭表单,则exit的值为true并且Application.Exit()将被调用。编辑:以上内容不起作用,因为LoginForm是Application.Run(loginForm)使用的主要表单。2条评论建议:使用退出标志:将Application.Run(newLoginForm())替换为LoginFormloginFrm=newLoginForm();loginFrm.Show();应用程序运行();没有退出标志:在您当前的代码中替换:frmHomefrm=newfrmHome();frm.Show();这个。关闭();通过frmHomefrm=newfrmHome();这个.Visible=false;frm.ShowDialog();这个。关闭();在程序.cs中:voidMain(){frmLoginfl=newfrmLogin();if(fl.ShowModal()==DialogResult.Ok){frmHomefh=newfrmHome();fh.Show();你可以强制表单隐藏,而不是关闭。不是捕获form_closed事件,而是捕获form_closing事件。看起来像这样。privatevoidLoginFrm_Closing(objectsender,FormClosingEventArgse){e.Cancel=true;这个。隐藏();frmHomefrm=newfrmHome();frm.Show();这将保持打开状态,但只有一个可见。在frmHome的某处,可能是一个保存LoginFrm的公共变量,因此您可以使用Hide()在两者之间切换;和显示();(以及您可能希望添加的任何其他形式)编辑:语法。您所要做的就是关闭2个表没问题。Form1fin=newForm1();fin.Close();这个.Visible=false;Form2win=newForm2();win.Visible=true;试试它可能对你有帮助frmHomefrm=newfrmHome();这个.hide()frm.ShowDialog();这个。关闭();实现此目的的一种方法:在启动时打开主窗体。把它藏起来。(实际上是可选的,但如果您真的不能显示多个表单,则不适合您。)使用ShowDialog()打开您的登录表单;如果登录成功,显示您的主窗体。如果没有,请关闭主窗体/应用程序。为什么它不停止在form_closed事件中调用application.exit?我不确定你是否真的需要它,如果你需要,你可以从屏幕上删除x图标并给它们一个关闭按钮。或者,事件参数中有一个CloseReason,它将告诉您是否是用户关闭了表单或代码。我不太确定我是否理解这一点,如果您想遍历特定顺序的表单,也许您可??以这样做:(伪代码)DimformsListasNewList(Ofform)formsList.add(Form1)formsList.add(Form2)formsList.add(Form3)'etcetcetc'ForEachfasForminformsListf.ShowDialog()'你可能有一个条件在这里打破for循环也许'NextMe.close'关闭应用程序'添加For循环的一个条件,它会打破for循环提前结束...注意:抱歉vb.net代码...但应该很容易理解以上是C#学习教程:WinformForms关闭和新开窗体分享,如果对你有用,需要了解更多C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
