Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8895

[C#] モーダル ダイアログ と モードレス ダイアログ

$
0
0

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;}}}

Viewing all articles
Browse latest Browse all 8895

Trending Articles