5
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-11-07

C# WinFormsの「モーダル ダイアログ」と「モードレス ダイアログ」の忘備録になります。

#1. モーダルダイアログと、モードレスダイアログの違い

モード名 内容
モーダル ダイアログ ダイアログボックスを閉じるまでは、同じアプリケーションの他のウィンドウに対する操作ができないダイアログボックス
モードレス ダイアログ ダイアログボックス表示中でも他のウィンドウの操作可能なダイアログボックス

#2. モーダルダイアログの表示方法

var form1  = new Form1();
form1 .ShowDialog();
form1 .Dispose();

ダイアログが不要になった時に Disposeメソッド を呼び出し、リソースを解放しなければならない。

#3. モードレスダイアログ

var form1  = new Form1();
form1.Show();

##3.1 モードレスダイアログの多重起動禁止

Form1 form1 = null;

private void button1_Click(object sender, System.EventArgs e)
{
    if ((form1 == null) || form1.IsDisposed)
    {
        form1 = new Form1();
        form1.Show();
    }
}

#4. 複数のダイアログ間で情報のやりとり

子ダイアログのプロパティを利用する。
(他にも方法はあるが、基本的におさえておくべき所だけ)

Form1.cs
using System;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        Form2 form2 = null;

        public Form1()
        {
            InitializeComponent();

            form2 = new Form2();
            form2.Show();

            textBox1.Text = form2.FormName;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            form2.FormName = "Form1";
            form2.SetText();

            textBox1.Text = form2.FormName;
        }
    }
}
Form2.cs
using System;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form2 : Form
    {
        public string FormName { get; set; } = "Form2";

        public Form2()
        {
            InitializeComponent();
            SetText();
        }

        public void SetText()
        {
            textBox1.Text = FormName;
        }
    }
}
5
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?