2016-05-21 7 views
-1

Helo、 私は2つのフォーム:form1form2を持っています。 フォーム1のボタンを押すと、form2form1が表示されます。 Form1の中C#フォーム2を非表示にして再オープンします

コード:私はform2の[×](閉じるボタン)を押すと

private void button_Click_1(object sender, EventArgs e) 
{ 
form2 form = new form2(); 
form.Show(); 
} 

、私はそれを非表示にします。 Form2の中

コード:私は再びform1からButton1を押すと

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason == CloseReason.UserClosing) 
    { 
     e.Cancel = true; 
     Hide(); 
    } 
} 

問題があります。それはform2を開きますが、隠されていなかったように、初めて開くように開きます。 form2を閉じたくないのは、フォームが隠れている間にカウントしているタイマーなのでです。 [x]を押したときにform2を非表示にするにはどうすればいいですか?また、最初に再表示するのではなく、再度ボタン1を押して再表示しますか? ありがとうございました!

答えて

4

あなたは、そのインスタンスを保存し、同じを使用して得たので、あなたは、それの別のインスタンスを作成form2 form = new form2()を書く:

private Form form; 
private void button_Click_1(object sender, EventArgs e) 
{ 
    if(form==null) 
     form = new Form2(); 

    form.Show(); 
} 
+0

[OK]を、私は理解しますが、私は再びForm1の中にボタンを押したとき、私はエラーを持っています。エラー:「破棄されたオブジェクトにアクセスできません」。これはform.Show()に表示されます。フォーム1で –

+0

私はあなたの質問であなたが言ったこと、つまり 'FormClosingEventArgs.Cancel = true'を設定し、' Form.Hide() 'を呼び出すなら、あなたのform2インスタンスを破棄してはならないと考えています – Logerfo

+0

何かを変更する必要がありますform2形式でクローキング?私の問題がありますか?私を信じて、私はこの問題について多くの研究を行いましたが、私はこれまで多くの点で試みました。 –

関連する問題