我不知道你为什么要关闭你的mainForm
. 在这种情况下,mainForm
是应用程序可执行形式。如果您关闭mainForm
,所有其他表单也将关闭。
你真正想做的是什么?我认为您的表格命名有点令人烦恼。mainForm
对我来说意味着你的应用程序的主要部分将以这种形式执行,是吗?
您为什么不构建一个LoginForm
在您的应用程序启动并且当前未验证用户后将显示的内容?我认为这不应避免您的目的,并且将是一个干净的解决方案。
一些代码示例:
public partial class MainForm : Form
{
private bool isVerified = false;
public MainForm()
{
InitializeComponent();
InitializeLogin();
}
private void MainForm_Load(object sender, EventArgs e)
{
}
private void InitializeLogin()
{
if (!isVerified)
{
using (LoginForm login = new LoginForm())
{
if (login.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("Login successful!");
isVerified = true;
}
}
}
else
{ }
}
这是LoginForm
, 将在 Mainform 初始化并且当前没有经过验证的用户后调用。请注意,这只是演示代码,但可能是一种可能的实现。
public partial class LoginForm : Form
{
public LoginForm()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (IsUser())
{
// the DialogResult of the Form must be set
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
}
private bool IsUser()
{
return true;
}
另一个想法是构建一个引导程序,Application.Run()
在加载任何表单之前管理您的方法,如 Sathish Raja S 解决方案。
一些额外的想法:
- 避免用户在用户名/密码文本框填充凭据之前单击登录按钮。
- 您可以更灵活地构建它并扩展 LoginForm 以验证应用程序的特殊密码保护部分的用户,但是第一个“版本”可以在应用程序范围内重用。