关闭报名表

时间:2013-07-22 22:55:22

标签: c#

   Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form_Login());

登录后我想制作登录后显示的新表格是主表格和关闭当前表格

我试过

This.Hide();

它只是隐藏表单但它仍然在任务管理器上运行

我试过

This.Close();

它关闭整个应用程序,因为Form_Login是主窗体

1 个答案:

答案 0 :(得分:2)

关闭Form1后返回DialogResult。在Main()中使用该值来确定是否应该打开Form2。这样的事情。

在Form1中,可能是按钮单击处理程序:

this.DialogResult = DialogResult.OK;
this.Close();

在Program.cs中:

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var form1 = new Form1();
Application.Run(form1);

if (form1.DialogResult == DialogResult.OK) {
    Application.Run(new Form2());
}

如果您的Form1关闭而未将DialogResult设置为DialogResult.OK,您的应用程序将退出。如果您的Form1关闭且其DialogResult设置为DialogResult.OK,那么Form2将会打开。


修改:使用此技术进行简单登录

这是一种方法。

创建一个描述登录屏幕结果的枚举:

public enum LogonStatus { NoLogon, UserA, UserB };

在登录屏幕上,创建一个存储登录结果的属性:

public LoggedOnUser User { get; private set; }

在登录表单中为登录操作分配值并关闭表单:

LogonResult = LogonStatus.UserA;  // UserA logged in, for example.
this.Close();

在Main中运行Logon表单,检查表单的LogonResult proeprty并处理结果:

static void Main() {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    var loginForm = new Form_Login();
    Application.Run(loginForm);

    if (loginForm.LogonResult == LogonStatus.NoLogon) {
        // Do something because there was no logon, or do nothing here and let your app exit.

    } else {
        // Launch your application form, passing in the logged on user.
        Application.Run(new AppForm(loginForm.LogonResult));
    }
}

此示例显示将LogonStatus传递给AppForm的构造函数,以允许您定制用户登录。

虽然如上所述,你应该知道这不是最好的方法。更灵活,更强大的解决方案将涉及利用Windows目录服务。