循环C中的父窗体和子窗体#

时间:2016-04-06 22:21:23

标签: c# forms

我正在尝试为我的工具创建一个登录并对其进行排序但是当他们按下登录(子表单)时,程序循环并要求用户再次登录。当我按下“退出”时,我会注意到按钮然后加载父表单罚款,但我不想这样。我希望我的用户按下登录,然后直接进入父表单。 要在Form1_Load中的父窗体之前打开子窗体,我有:

        Login Log = new Login();
        Log.ShowDialog();

在'登录'子表单上的按钮我有:

        this.Hide();
        Form1 Main = new Form1();
        Main.Show();

1 个答案:

答案 0 :(得分:0)

处理此问题的最佳方法是在表单启动之前处理登录(例如,在Program.cs中但在应用程序初始化之后)。在您的登录表单中插入一个变量(例如,一个bool,表明他们是否通过了您的授权测试)并在表单关闭后进行检查以查看授权的状态。如果该标志设置为false,那么您可以执行返回或Application.Exit(),用户将永远不会看到主窗体。

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        SomeLoginForm Login = new SomeLoginForm();
        Login.ShowDialog();
        if (!Login.HasPassedAuthorization)
        {
            MessageBox.Show("Sorry you failed to pass the test! I'm kicking you out now!");
            Application.Exit(); // or do a "return;"
        }

        Application.Run(new Form1());
    }
}


static class SomeLoginForm()
{
        internal bool HasPassedAuthorization;

}