- ベストアンサー
C#のFORMについて
C#のFORMについて お世話になります。 .NET C#にて開発しております初心者です。 親Formからボタンを押すと子Form1を開き、 そして、親Formの同じボタンをまた押すと、子Form1が 開かれていれば、子Form1を閉じ、子Form2を開く。 次にまた親Formの同じボタンを押すと、子Form2が 開かれていれば、子Form2を閉じる。 上記内容のコードがうまく書けませんでした。 具体的にどの様に書いたら良いか、 ご教授頂けないでしょうか。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
モードレスダイアログを多用すると、思わぬ落とし穴になる場合が……。 本当に必要な場合以外はモーダルダイアログにした方が、扱い自体が 楽になる場合も多いと思いますよ。 さて回答ですが、これってやり方は多種多様ありますよね。 以下の例は「親Form側にて、現在どのフォームを開いているか管理・判断する」 方法です。手抜きというか、技術的に見るべき点は全くないコードですが、 単純でいいかなぁと思うので……(^^; ※親フォーム側のコード int formNo = -1; // フォーム管理用 Form1 frm1 = null; // フォーム1 Form2 frm2 = null; // フォーム2 private void button1_Click(object sender, EventArgs e) { formNo++; if (formNo > 2) formNo = 0; switch (formNo) { case 0: frm1 = new Form1(); frm1.Show(); break; case 1: if (frm1 != null) { frm1.Close(); frm1.Dispose(); frm1 = null; } frm2 = new Form2(); frm2.Show(); break; case 2: if (frm2 != null) { frm2.Close(); frm2.Dispose(); frm2 = null; } break; } }
その他の回答 (1)
Form2 fm2; Form3 fm3; private void button1_Click(object sender, EventArgs e) { if ((fm2 != null) && (fm2.Visible == true)) { fm2.Close(); fm3 = new Form3(); fm3.Show(this); } else if ((fm3 != null) && (fm3.Visible == true)) { fm3.Close(); } else { fm2 = new Form2(); fm2.Show(this); } }
お礼
ありがとうございます。 参考になりました。
お礼
ありがとうございます。 参考になりました。