C#のFormアプリケーションで、Form1からForm2をモードレスで1つだけ表示させたいです。
上のようにするとボタンクリックの度に表示されるので、下のようにしたら所望の動作をしましたが、なんとなくスマートな方法ではないと感じています。
他の良い方法は無いでしょうか?それとも下の方法で充分でしょうか。
C#
1 // Form1のイベントハンドラ 2 private void button1_Click(object sender, EventArgs e) 3 { 4 Form2 form2 = new Form2(); 5 form2.Show(); 6 }
C#
1 // Form1のメンバ変数 2 Form2 form2 = new Form2(); 3 4 // Form1のイベントハンドラ 5 private void button1_Click(object sender, EventArgs e) 6 { 7 form2.Show(); 8 }
以下、追記。
<スマートで無いと感じる理由>
Show()によりフォームが開くかどうかをShow()の仕様に任せているように感じるため。
下のコードで1つしか開かないことをShow()で保障しているかがわからない。
Show()呼び出し前に明示的に確認必要かどうかがわからない。
<知りたいこと>
システム全体としてのスマートさやデータ受渡し方法などは考慮せず、
「Form1からForm2をモードレスで1つだけ表示させたい」という点のみ
に絞ったときに下のコードが適切か。他によい方法があるか。
特に問題が起きてないのでしたらこれでいいような。
どのようなアドバイスを期待されているのでしょうか。(回答者も魔法使いではないのであくまで言語仕様と要件に沿ったものしかできません)

回答3件
あなたの回答
tips
プレビュー