DialogResult
在关闭 Form1 时返回 a 。使用该值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
属性并处理结果:
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));
}
}
此示例显示将 a 传递LogonStatus
给您AppForm
的构造函数,以允许您在用户登录时对其进行定制。
尽管如此,您应该知道这并不是最好的方法。更灵活、更强大的解决方案将涉及利用 Windows 目录服务。