0

2つのフォームがあります。最初のフォームの初期化で、私はコードを持っています:

public App_Index()
        {
            InitializeComponent();

            this.Hide();

            Authorization loginForm = new Authorization();
            loginForm.ShowDialog();
        }

そして、Form2の閉じるボタン[X]を押すと— App_Index(Form1)Form do .Show(); しかし、これに関するForm2のコードはありません。Form2で[X]を押すと、Form1とForm2を閉じたい。これどうやってするの?

4

3 に答える 3

2

これはどう?ダイアログがキャンセルされた場合、これは現在のフォームを閉じます。

public App_Index()
{
    InitializeComponent();

    this.Hide();

    Authorization loginForm = new Authorization();
    if (loginForm.ShowDialog() == DialogResult.Cancel)
        Close();
}
于 2013-01-23T12:52:54.310 に答える
0

イベントを処理できFormClosingます:

private void Authorization_FormClosing( object sender, FormClosingEventArgs e )
{
    if ( e.CloseReason == CloseReason.UserClosing )
    {
         Application.Exit();
    }
}
于 2013-01-23T13:00:27.493 に答える
0

これを行うには、いくつかの方法があります。ループスルーを使用してApplication.OpenForms、必要なフォームを閉じることができます。Form_ClosingForm2のイベントでこれを行います。

    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        foreach(Form frm in Application.OpenForms)
        {
            if(f.Name == "Form1")
                f.Close();
        }
    }

OpenForms コレクション内でフォームに直接アクセスして閉じることもできます。

Application.OpenForms["Form1"].Close()
于 2013-01-23T13:04:23.010 に答える