[C#]モーダルダイアログとモードレスダイアログ
モーダルダイアログとモードレスダイアログ
[環境]
VisualStudio2008
C# Windowsフォームアプリケーション
マイクロアドBTパートナーはブログやサイトに貼るだけ。お小遣いをゲットしよう!
2つのフォーム(Form1、Form2)を用意し、一方(今回はForm2)をモーダルまたは
モードレスダイアログとして表示する。
[Form1側]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// モーダルダイアログ
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
using (Form2 dlg = new Form2("モーダル"))
{
dlg.ShowDialog(this);
}
}
/// <summary>
/// モードレスダイアログ
/// </summary>
private void button2_Click(object sender, EventArgs e)
{
Form2 dlg = new Form2("モードレス");
dlg.Show(this);
}
}
[Form2側]
public partial class Form2 : Form
{
public Form2(string str)
{
InitializeComponent();
label1.Text = str;
}
}
モーダルとして表示するときは「ShowDialog()」、モードレスとして表示するときは
「Show()」メソッドを使用する。
各々のメソッドに「this」を渡しているのは、Form1がForm2のオーナーである
ことを意味するため。
これにより、Form2がForm1より下に表示されることがなくなる。
(特にモードレスの際)
注意すべき点は、FormクラスがIDisposableを実装しているということ。
モードレスダイアログを何回も起動してDisposeを行わないと、そのうちメモリがなくなる。