C# 如何在c中的另一个窗体中打开新的窗口窗体#
我用c#开发了一个windows窗体应用程序 它有两个表单,如登录表单和主表单。当我输入正确的登录凭据时,它应该关闭(而不是隐藏)登录表单并显示主表单 我使用了以下代码C# 如何在c中的另一个窗体中打开新的窗口窗体#,c#,winforms,login,mdi,C#,Winforms,Login,Mdi,我用c#开发了一个windows窗体应用程序 它有两个表单,如登录表单和主表单。当我输入正确的登录凭据时,它应该关闭(而不是隐藏)登录表单并显示主表单 我使用了以下代码 MainForm main=new MainForm(); this.hide();//close login form main.show();//display main form 但是,当我使用mdi容器中的十字标记(右上角)关闭主窗体时,主窗体将关闭,但应用程序仍在任务管理器中运行 如果我使用下面的代码而不是前面的代码
MainForm main=new MainForm();
this.hide();//close login form
main.show();//display main form
但是,当我使用mdi容器中的十字标记(右上角)关闭主窗体时,主窗体将关闭,但应用程序仍在任务管理器中运行
如果我使用下面的代码而不是前面的代码,应用程序将在主窗体显示之前关闭
this.close()//close login form
main.show();//display main form
我是否必须从主窗体中隐藏mdi容器,或者是否有任何方法可以实现这一点?请提供帮助。应用程序仍在运行,因为您仍有一个表单处于活动状态,但处于隐藏状态 您可以在MainForm中订阅关闭事件,并通过application.exit()手动退出应用程序 另一个选项是确保LoginForm.Close事件的处理程序中只有一个窗口处于活动状态:open MainForm,如下所述:
您需要在关闭登录表单之前显示主表单。 试试这个:
main.show();//display main form
this.close()//close login form
试着这样做:
this.Hide();
Main.ShowDialog();
this.Close();
private void main_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
首先,隐藏登录表单。
接下来,显示主窗体对话框,但在对话框关闭之前,阻止“ShowDialog()”的调用方继续。
最后,关闭对话框后,您将关闭登录表单,结束应用程序。我通常做的是:
MainForm main=new MainForm();
Visible = false;
main.Show();
在主窗体中,我将form_closed事件处理程序设置为Application.Exit()代码>
像这样:
this.Hide();
Main.ShowDialog();
this.Close();
private void main_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
因此,当用户单击关闭主应用程序时,所有应用程序都会停止我认为接受的答案在某种程度上是不正确的。这就是OP想要的答案。抱歉,我花了一年时间才得到答复。在项目的Program.cs文件的Main()方法内部,复制并粘贴以下内容:
Logon logonForm = new Logon();
if(logonForm.ShowDialog() == DialogResult.OK)
{
Application.Run(new Portal());
}
在logonForm内部,当用户通过身份验证或成功设置登录事件时,表单的DialogResult=DialogResult.OK以下是一个示例:
private void logonButton_Click(object sender, EventArgs e)
{
string username = usernameTextBox.Text;
string password = passwordTextBox.Text;
if(logon(username, password))
{
MessageBox.Show("Logged On Successfully!", "Success",
MessageBoxButtons.OK, MessageBoxIcon.Information);
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
else
{
MessageBox.Show(getFailureReason(), "Failure",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
你试过这个吗,。当我尝试此代码时,我的应用程序已关闭。Irshad请更正这个答案,你的答案是不正确的,因为当你从根窗体中显示另一个窗体,并关闭它根窗体时,它始终是闭孔应用程序。我同意这在某种程度上是OP想要的方式,但这是OP不想做的。他或她想关闭(而不是隐藏)登录表单。有关成功登录时关闭登录表单并启动主表单的方法,请参见下面的回答。