なぜあなたがあなたを閉じたかったのか分かりません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
、メインフォームが初期化され、現在確認済みのユーザーがいない後に呼び出されます。これは単なるデモコードですが、1つの可能な実装である可能性があることに注意してください。
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;
}
もう1つのアイデアは、Application.Run()
Sathish Raja Sソリューションのように、フォームが読み込まれる前にメソッドを管理するブートストラッパーを構築することです。
いくつかの追加の考え:
- ユーザー名/パスワードのテキストボックスに資格情報が入力される前に、ユーザーがログインボタンをクリックしないようにします。
- これをより柔軟に構築し、LoginFormを拡張して、アプリケーションの特別なパスワードで保護されたセクションのユーザーを確認できますが、この最初の「バージョン」はアプリケーション全体で再利用できます。