基本かも知れないけども。
Form1とForm2を相互に行き来したい場合、
Fom1.ShowDialog()して
Form1.Btn1_Click() からForm2.Show()して処理が終わるまで待ち、
Form2.CloseButton_Click()されたら、
Form2.Hide()してForm1()に戻り、
またForm1.Btn1_Click()されたらさっきまで出してたForm2をShow()で再表示する処理を作成した。
Form2.CloseButton_Click()を押された時に、
自作のメッセージFormでShowDialog()して「閉じてもいーですか?」的に確認していたが、
何故かそいつがstaticな自分自身を持っていて、
それをShowDialog()し、OKやら押されたらForm.Close()で画面を閉じていた。
が、
メッセージForm.Close()
Form2.Hide()
とすると、次にForm2.Show()した時にForm2で操作ができなくなってしまった。(Activeじゃない感じで)
何でー!?と思ったら、
メッセージFormがstaticな上にDispose()されてないから前面に残ってたっぽい。
メッセージFormをShowDialog()した後、
メッセージForm.Close()
メッセージForm.Dispose()
メッセージForm = null
したら次回のForm2.Show()も正常に動作するようになった。
やめてよも~
自分クラスをstaticで持ってる意味がわかんないよ~
てかちゃんとDispose()しなさいよも~
0 件のコメント:
コメントを投稿