Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form_Login());
登录后我想制作登录后显示的新表格是主表格和关闭当前表格
我试过
This.Hide();
它只是隐藏表单但它仍然在任务管理器上运行
我试过
This.Close();
它关闭整个应用程序,因为Form_Login是主窗体
答案 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目录服务。