我想在输入正确的使用密码后关闭登录表单并显示主表单
if (isValidateUser == true)
{
HomePage homepage = new HomePage();
homepage.Show();
this.Close();
}
但是在这段代码之后,所有的应用程序都关闭了。你能帮助我吗?
来自MSDN关于 Form.Close 方法
当窗体关闭时,对象内创建的所有资源都将关闭并释放窗体。您可以通过处理 Closing 事件并设置作为参数传递给事件处理程序的 CancelEventArgs 的 Cancel 属性来防止在运行时关闭窗体。如果您要关闭的表单是应用程序的启动表单,则您的应用程序将结束。
您可以使用 Hide() 方法隐藏当前表单而不是关闭它。
这是我的解决方案:
您开始HomePage
并在OnLoad()
方法覆盖上显示登录表单
public partial class HomePage : Form
{
public HomePage()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
var dlg=new LoginForm();
dlg.StartPosition=FormStartPosition.CenterScreen;
if(dlg.ShowDialog()==DialogResult.OK)
{
userStatusLabel.Text=dlg.UserName;
}
else
{
this.Close();
}
}
}
登录表单需要暴露登录信息
public string UserName { get { return usrText.Text; } }
并且[OK]
按钮的DialogResult
属性设置为按钮,DialogResult.OK
并且与按钮类似[Cancel]
。并确保用户在密码有效之前不能按确定。
你没有说太多,所以我会做一些假设。
我想这是来自LoginForm
. 我还假设您调用表单事件Application.Exit()
的处理程序。Close
这就是关闭您的应用程序的原因。您应该标记某人(例如在调用之前使用 abool
并将其设置为)表单应该只是关闭而不是调用。true
Close()
Application.Exit()