C#でWindowsフォームアプリケーションのフォームの最小サイズ・最大サイズを設定する方法を紹介します。
フォームの最小サイズを設定するには、System.Windows.Forms名前空間にあるFormクラスのMinimumSizeプロパティを使用します。フォームの最大サイズを設定するには、同クラスのMaximumSizeプロパティを使用します。
本記事ではVisual Studioで作成した、Windowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。
目次
フォームの最小サイズと最大サイズを設定する
フォームの最小サイズと最大サイズは、フォームデザイナーのプロパティグリッド、またはコードで設定することができます。
デザイナーのプロパティグリッドで設定する
フォームデザイナーを開きます。
フォームデザイナーを開いたら、プロパティウィンドウを表示します。
プロパティウィンドウが表示されていない場合は、メニューバーの「表示」メニューにある「プロパティ ウィンドウ」をクリックするかF4キーを押してください。
上記の画像のプロパティグリッドは項目別ではなくアルファベット順で表示しています。
デザイナーのプロパティグリッドにあるMinimumSizeプロパティのテキストボックスに、幅と高さをカンマ(,)で区切って入力します。
MinimumSizeプロパティの左にある「+」をクリックすると、幅(Width)と高さ(Height)が展開して表示されますので、幅(Width)と高さ(Height)をそれぞれのテキストボックスに入力することもできます。
MaximumSizeプロパティもMinimumSizeプロパティと同様に、テキストボックスに、幅と高さをカンマ(,)で区切って入力します。
左にある「+」をクリックすると、幅(Width)と高さ(Height)が展開して表示されますので、幅(Width)と高さ(Height)をそれぞれのテキストボックスに入力することで設定できるのもMaximumSizeプロパティもMinimumSizeプロパティと同様です。
コードで設定する
コードエディタを表示して以下のコードを入力します。
1 2 3 4 5 6 7 8 9 10 11 12 |
// フォームのインスタンスを生成 Form form = new Form(); // 最小サイズを定義 Size minimumSize = new Size(400, 300); // 最大サイズを定義 Size maximumSize = new Size(800, 600); // フォームの最小サイズを設定 form.MinimumSize = minimumSize; // フォームの最小サイズを設定 form.MaximumSize = maximumSize; // フォームを表示 form.ShowDialog(this); |
フォームのMinimumSizeプロパティを指定したフォームは、境界線(ボーダー)をドラッグしてサイズを小さくしても、MinimumSizeプロパティに設定した大きさまでしか小さくできなくなります。
MaximumSizeプロパティはMinimumSizeプロパティとは逆に、境界線(ボーダー)をドラッグしてサイズを大きくした際に、フォームを大きくできるサイズとなります。
MinimumSizeプロパティとMaximumSizeプロパティは、設定をしない場合の既定値が「Width: 0, Height: 0」になっています。フォームの最小サイズと最大サイズを指定しない(フォームのサイズに上限と下限を設けない)場合は、MinimumSizeプロパティとMaximumSizeプロパティを「Width: 0, Height: 0」にすることになります。
サンプルプログラム
ここではフォームのインスタンスを生成してフォームを表示し、表示したフォームの最小サイズ(MinimumSizeプロパティ)と最大サイズ(MaximumSizeプロパティ)を指定してフォームの大きさを制限したり、最小サイズ、最大サイズを既定値に戻して、フォームのサイズを制限しないようにするプログラムを作成します。
ユーザーインターフェース
フォームには、新しいフォームのインスタンスを生成して表示するボタン(button1)と、最小サイズと最大サイズを指定するテキストボックス(textBox1とtextBox2)を配置し、最小サイズと最大サイズを表示したフォームに適用するボタン(button2)を配置します。
ソースコード
ボタンがクリックされた際のイベント処理を記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
using System; using System.Drawing; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // フォームのインスタンス変数 Form _form = null; // フォームを表示する private void button1_Click(object sender, EventArgs e) { try { if (_form != null && !_form.IsDisposed) { return; } // フォームのインスタンスを生成する _form = new Form(); // フォームを表示する _form.Show(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } // 最小サイズと最大サイズを設定する private void button2_Click(object sender, EventArgs e) { try { SizeConverter sizeConverter = new SizeConverter(); // 最小サイズを設定 string minimum = textBox1.Text; if (!string.IsNullOrEmpty(minimum)) { Size minimumSize = (Size)sizeConverter.ConvertFromString(minimum); _form.MinimumSize = minimumSize; } // 最大サイズを設定 string maximum = textBox2.Text; if (!string.IsNullOrEmpty(maximum)) { Size maximumSize = (Size)sizeConverter.ConvertFromString(maximum); _form.MaximumSize = maximumSize; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
プログラムの実行
プロジェクトをビルドして実行(デバッグ)します。
button1をクリックするとフォームが表示されます。
最小サイズと最大サイズのテキストボックスにサイズを指定してbutton2をクリックすると、表示したフォームのMinimumSizeとMaximumSizeが設定されます。
テキストボックスに「0, 0」を指定してbutton2をクリックすると、フォームの最小サイズと最大サイズが解除されます。