C# WinFormsの「モーダル ダイアログ」と「モードレス ダイアログ」の忘備録になります。
1. モーダルダイアログと、モードレスダイアログの違い
モード名 | 内容 |
---|---|
モーダル ダイアログ | ダイアログボックスを閉じるまでは、同じアプリケーションの他のウィンドウに対する操作ができないダイアログボックス |
モードレス ダイアログ | ダイアログボックス表示中でも他のウィンドウの操作可能なダイアログボックス |
2. モーダルダイアログの表示方法
varform1=newForm1();form1.ShowDialog();form1.Dispose();
ダイアログが不要になった時に Disposeメソッド を呼び出し、リソースを解放しなければならない。
3. モードレスダイアログ
varform1=newForm1();form1.Show();
3.1 モードレスダイアログの多重起動禁止
Form1form1=null;privatevoidbutton1_Click(objectsender,System.EventArgse){if((form1==null)||form1.IsDisposed){form1=newForm1();form1.Show();}}
4. 複数のダイアログ間で情報のやりとり
子ダイアログのプロパティを利用する。
(他にも方法はあるが、基本的におさえておくべき所だけ)
Form1.cs
usingSystem;usingSystem.Windows.Forms;namespaceWindowsFormsApp2{publicpartialclassForm1:Form{Form2form2=null;publicForm1(){InitializeComponent();form2=newForm2();form2.Show();textBox1.Text=form2.FormName;}privatevoidbutton1_Click(objectsender,EventArgse){form2.FormName="Form1";form2.SetText();textBox1.Text=form2.FormName;}}}
Form2.cs
usingSystem;usingSystem.Windows.Forms;namespaceWindowsFormsApp2{publicpartialclassForm2:Form{publicstringFormName{get;set;}="Form2";publicForm2(){InitializeComponent();SetText();}publicvoidSetText(){textBox1.Text=FormName;}}}