ModeLess Dialog

モードレス・ダイアログボックスの基礎です。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. 通常のダイアログボックス(タスク・モーダル)では、ダイアログボックスが表示されている間、メインフォームの操作は一切不能です。
    ダイアログボックスが表示されていても、親フォームの操作が可能なものがモードレス・ダイアログボックスです。
    モーダル・ダイアログもモードレス・ダイアログも大きな違いはありません。
    前回と同様に Main(Form1) は自動生成で、MyDialog Class は直接定義してみましょう。
  2. 自動生成でプロジェクトを構築します。
    Form1 にボタンを貼り付けて、Button_Click() メソッドを定義します。
    Dialog を表示するだけなので簡単です。
    モーダル・ダイアログは Mydlg.Show(); で呼び出します。
        private void Button_Click(object sender, EventArgs e)
        {
            MyModeless Mydlg = new MyModeless(this);
            Mydlg.Show();
        }
    
  3. MyDialog Class です。
    Constractor で親の Form を受け取って Owner に設定します。
    MyDialog Class は Form1.cs の最後に追加して下さい。
    こちらも Dialog を表示するだけです。
    Close ボタンがクリックされると Close(); メソッドで閉じます。
    class MyModeless : Form
    {
        public MyModeless(Form pform)
        {
            Text = "Modeless Dialog";
            Owner = pform;
            FormBorderStyle = FormBorderStyle.FixedDialog;
            MinimizeBox = false;
            MaximizeBox = false;
            ControlBox = false;
            ShowInTaskbar = false;
    
            Button btn = new Button();
            btn.Text = "Close";
            btn.Location = new Point((ClientSize.Width - btn.Width) / 2,
                ClientSize.Height - btn.Height - 5);
            btn.Parent = this;
            btn.Click += new EventHandler(btn_Click);
        }
    
        void btn_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
    
  4. 通常のダイアログボックスは、ダイアログボックスが表示されている間、メインフォームの操作は不能ですが、今回は操作が可能なので、ボタンをクリックする毎に幾らでもダイアログボックスが表れます。
    ダイアログボックスは Close ボタンで閉じて下さい。
    Main() を閉じると、ダイアログボックスも閉じます。
    モードレス・ダイアログは TextEditor の検索機能などに利用されます。
    今回は基本だけなので、これまでの説明と組み合わせてアプリケーションを作成して下さい。

超初心者のプログラム入門(C# Frame Work)