C# でダイアログボックスを使う方法

投稿日 2015/09/22 Visual Studio 2015 対応

[Home] | [C# の記事]

概要

Visual Basic のテンプレートには「ダイアログ」がありますが、C# にはなぜかありません。しかし、派生元の Dialog フォームを作っておけばそこから派生して簡単にダイアログボックスを作ることができます。


ダイアログボックスのひな型

ダイアログボックスのひな型を作ります。これは、アプリケーションで必要なダイアログボックスの派生元(基底クラス)になります。

  1. ソリューションエクスプローラでプロジェクトの追加メニューを実行する。
  2. Windows.Formsアプリケーションを選択して OK をクリックする。
  3. プロジェクトのプロパティを開き、次の図(例)のように設定する。
  4. フォームのプロパティを以下のように設定してビルドする。
    プロパティ 設定値
    FormBorderStyle FixedDialog
    MaximizeBox False
    MinimizeBox False
    ShowInTaskBar False
    StartPosition CenterParent

ビルドを行うと DLL ができるので、これを使用先で参照して使います。


サンプル

このサンプルでは下のような親フォームを使います。このサンプルでは前に作っておいたダイアログのひな型を DLL からインポートしています。したがって、参照設定にこの DLL (ここでは DialogBase という名前にしています) を追加しておく必要があります。



Dialog1

このダイアログのデザイン画面は下のようになっています。まず、TableLayoutPanel を使ってラベルとコントロールを配置しています。OK と Cancel ボタンは FlowlayoutPanel 上に配置しています。TableLayoutPanel は Anchor プロパティを Top,Left,Right に設定してダイアログの大きさを変えてもデザインが崩れないようにしています。FlowlayoutPanel の Anchor プロパティは、Left,Right にしています。また、FlowDirection プロパティを RightToLeft にしてボタンを右側から配置しています。

実行時のイメージは下のようになります。


これはこのダイアログのソースですが、ダイアログのひな型 (DialogBase.Dialog) から派生させています。

using System;

namespace FormTest
{
    public partial class Dialog1 : DialogBase.Dialog
    {
        public Dialog1()
        {
            InitializeComponent();
        }
        
        /// <summary>
        /// ダイアログがロードしたとき
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Dialog1_Load(object sender, EventArgs e)
        {
        
        }
        
        /// <summary>
        /// スピナーが変化したとき
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void spinner1_ValueChanged(object sender, EventArgs e)
        {
            txtAmount.Text = spinner1.Value.ToString();
        }
    }
}

Dialog2

Dialog2 はユーザコントロールを使った例です。デザイン画面は下のようになっています。

これは実行時のイメージです。


Dialog3

Dialog2 は Forms 2.0 のコントロールを使った例です。デザイン画面は下のようになっています。

これは実行時のイメージです。


 

 


 

ページの先頭へ