0

我想在输入正确的使用密码后关闭登录表单并显示主表单

if (isValidateUser == true)
        {

            HomePage homepage = new HomePage();
            homepage.Show();

            this.Close();
        }

但是在这段代码之后,所有的应用程序都关闭了。你能帮助我吗?

4

3 回答 3

0

来自MSDN关于 Form.Close 方法

当窗体关闭时,对象内创建的所有资源都将关闭并释放窗体。您可以通过处理 Closing 事件并设置作为参数传递给事件处理程序的 CancelEventArgs 的 Cancel 属性来防止在运行时关闭窗体。如果您要关闭的表单是应用程序的启动表单,则您的应用程序将结束。

您可以使用 Hide() 方法隐藏当前表单而不是关闭它。

于 2013-06-06T11:40:30.470 回答
0

这是我的解决方案:

您开始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]。并确保用户在密码有效之前不能按确定。

登录 主页

于 2013-06-06T14:17:14.553 回答
0

你没有说太多,所以我会做一些假设。

我想这是来自LoginForm. 我还假设您调用表单事件Application.Exit()的处理程序。Close这就是关闭您的应用程序的原因。您应该标记某人(例如在调用之前使用 abool并将其设置为)表单应该只是关闭而不是调用。trueClose()Application.Exit()

于 2013-06-06T11:33:24.860 回答