0

このメソッドを使用して MainForm から新しい MdiChild を作成します。

AdminLogInForm adminForm;
 private void LogInAsAdminMenuItem_Click(object sender, EventArgs e)
    {
        if (adminForm == null)
        {
            adminForm = new AdminLogInForm();
            adminForm.MdiParent = this;
            adminForm.Show();
            adminForm.Dock = DockStyle.Fill;
            adminForm.BringToFront();
            LogInAsAdminMenuItem.Enabled = false;              
        }
        else
        {
            adminForm.Activate();
            adminForm.BringToFront();
        }
    }

そのメソッドを使用して chld フォーム "this.close()" を使用して子供を閉じると、もう開くことができないのはなぜですか?

そこで私は close(); を呼び出します。

        private void cancelLogInButton_Click(object sender, EventArgs e)
    {
        this.MdiParent.Activate();            
        if(this.MdiParent!=null)
        ((MainForm)this.MdiParent).LogInAsAdminMenuItem.Enabled = true;
        this.Close();
    }

ところで、私がこれを作る前に私が尋ねた仕事をするために。すべてのステートメントの後。

4

2 に答える 2

0

フォームを閉じることで、adminFormインスタンスを null にすることはありません (これは、次にフォームを開こうとしたときに if 条件がチェックするものです)。

フォーム make adminForm=nullを処分すると、次回は if 条件が機能します。

private void LogInAsAdminMenuItem_Click(object sender, EventArgs e)
    {
        if (adminForm == null)
        {
            adminForm = new AdminLogInForm(this);
            adminForm.Disposed += new EventHandler(adminForm_Disposed); //Add Disposed EventHandler
            adminForm.MdiParent = this;
            adminForm.Show();
            adminForm.Dock = DockStyle.Fill;
            adminForm.BringToFront();
            LogInAsAdminMenuItem.Enabled = false;              
        }
        else
        {
            adminForm.Activate();
            adminForm.BringToFront();
        }
    }

    void adminForm_Disposed(object sender, EventArgs e)
    {
        adminForm = null;
    }
于 2012-04-26T05:05:29.250 に答える
0

フォームを閉じると破棄されると元帥が説明したように、このように破棄するための条件を追加する必要があります

AdminLogInForm adminForm;

private void LogInAsAdminMenuItem_Click(object sender, EventArgs e)
    {
        if (adminForm == null || adminForm.IsDisposed)
        {
            adminForm = new AdminLogInForm();
            adminForm.MdiParent = this;
            adminForm.Show();
            adminForm.Dock = DockStyle.Fill;
            adminForm.BringToFront();
            LogInAsAdminMenuItem.Enabled = false;              
        }
        else
        {
            adminForm.Activate();
            adminForm.BringToFront();
        }
    }

または、このようにフォームを mdi として使用する関数を作成することもできます

于 2012-05-11T22:33:39.267 に答える