1

サインイン機能を備えたプロジェクトに取り組んでいます

form1プロジェクトを実行すると、サインインを実行するフォーム( )があります。ログインボタンをクリックした後、別のフォームを作成します(form2)-それは私のプログラムのフォームです。最初のフォーム(form1)を非表示にしました。

問題は、form2のXボタンを押すと閉じますが、form1はまだ実行されていることです。

form1非表示にする代わりに閉じようとしました...しかし、これはform2起動する前に閉じます

form1

this.Hide();
Form2 x = new Form2();                 
x.Show();
4

4 に答える 4

6

私はあなたが間違った方法であなたのフォームを持っていると思います。

Form1はアプリであり、Form2が最初に読み込まれたときにダイアログとして表示され、閉じたときに結果を処理して、アプリケーションを続行するか閉じるかを決定できます。

何かのようなもの:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Load += new EventHandler(Form1_Load);
    }

    void Form1_Load(object sender, EventArgs e)
    {
        Form2 myDialog = new Form2();
        if (myDialog.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
        {
            // failed login
            // exit application
        }
        // all good, continue
    }
}
于 2013-03-01T01:43:19.940 に答える
1

子フォームイベントをサブスクライブし、それを使用して親フォームFormClosedを呼び出すことができます。Close

x.FormClosed += new FormClosedEventHandler(x_FormClosed);

void x_FormClosed(object sender, FormClosedEventArgs e)
{
    this.Close();
}
于 2013-03-01T01:43:48.693 に答える
0

アクセスが許可されている場合は、ログインボタンでこれを試してください

private void logInBtn_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2();
            frm.ShowDialog();
            this.Hide();
        }

終了する場合はform2で

private void exitBtn_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

お役に立てれば。

于 2013-03-01T01:43:40.603 に答える
0

form2に移動し、フォームの場合はFormClosedを探します。

このコードをイベントハンドラーに配置します。

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
    {
        Application.Exit();
    }

FormClosedは、ユーザーがフォームを閉じるたびに発生するイベントです。したがって、フォームを閉じるときに、アプリケーションを終了するコード(-applicationn.exit();-)を配置します。

これがうまくいくことを願っています。

于 2013-03-01T08:33:05.667 に答える