c# - 登录表单不会关闭

时间:2013-11-26 15:40:47

标签: c# login

我正在开发一个供个人使用的项目(简单的电话簿)。

基本上,我有三种形式:主要(主要),设置(用于配置设置的那种)和登录 (登录表单,只有在用户选中了启动时要求输入密码的选项时才会启动)。只是为了清楚说明:当.EXE文件启动时,它应该加载 Main 表单,除非选中要求传递的选项( Properties.Settings.Default.AskForPass ==是的) - 首先应该运行登录表单。

以下是登录表单的内容:

Login

我不知道如何让事情以正确的方式运作。

我尝试将 Program.cs 中的行从更改为登录

namespace Phonebook
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Login());
        }
    }
}

然后如果用户输入正确的用户名和密码并单击“确定”按钮:

private void button1_Click(object sender, EventArgs e)
    {
        if (txtUsername.Text == Properties.Settings.Default.MyUsername && txtPassword.Text == Properties.Settings.Default.MyPassword)
        {
            Main f1 = new Main();
            Login f3 = new Login();
            f1.Show();
            f3.Close();
        }
        else
        {
            DialogResult dialogResult = MessageBox.Show("Wrong password! Do you want to try again?", "Warning", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning);
            if (dialogResult == DialogResult.Retry)
            {
                return;
            }
            else if (dialogResult == DialogResult.Cancel)
            {
                this.Close();
            }
        }
    }

登录表单保留在后台,如您所见:

Contacts

我希望关闭登录表单,因此它不会出现在后台。问题是现在登录表单是主要表单,如果我尝试关闭它,整个应用程序将关闭。

我尝试过改变主人,但没有成功。

有什么想法吗?请帮助!

1 个答案:

答案 0 :(得分:5)

您正在创建一个新的登录表单并关闭它。试试

this.Hide();
f1.ShowDialog();
this.Close();

另一种方法是在登录表单上返回一个状态,然后检查它和Application.Run()主窗体:

在登录表单中:

private bool LoggedIn;
public bool IsLoggedIn { get { return LoggedIn; } }

然后在按钮中点击:

LoggedIn = true; 
this.Close();

在Program.cs中:

Login f = new Login();
Application.Run(f);

if (f.IsLoggedIn)
    Application.Run(new Main());