.NET TIPS

Windowsフォームでサイズ変更の範囲を制限するには?

デジタルアドバンテージ
2004/12/03

 Windowsフォームは、標準機能として、そのフォームの右下端をドラッグすることで、サイズを自由に拡大・縮小することができる。この機能を有効にするには、フォームのFormBorderStyleプロパティに「Sizable」(System.Windows.Forms名前空間のFormBorderStyle列挙体の値)を設定すればよい(FormBorderStyleプロパティのデフォルト値が「Sizable」であるため、実際には何も変更する必要がない)。また逆に、このプロパティ値を「FixedSingle」などに設定変更すると、サイズ変更を不可能にすることもできる。

 しかし、サイズ変更可能なままで、ある一定のサイズよりも小さくならないように(あるいは大きくならないように)制限したいという場合もあるだろう。

 例えば次のサンプル・アプリケーションは、制限なくフォームのサイズを拡大・縮小できる通常のフォームを使用している。

サイズ変更可能なサンプル・アプリケーション
制限なくフォームのサイズを拡大・縮小できるアプリケーションである。Windowsフォーム上にTextBoxコントロール、Buttonコントロール、ListBoxコントロール、StatusBarコントロールが配置されている。[登録]ボタンをクリックすると、TextBoxコントロールに入力した文字列がListBoxコントロールに追加される。

 このアプリケーションは、フォームのサイズ変更範囲に制限(限界)がないため、次の画面のようにListBoxコントロールが見えなくなってしまうまでフォームを小さくすることができる。

制限なくサイズ変更できるアプリケーション
ListBoxコントロールが見えなくなってしまうまでフォームを小さくすることができる。

 もちろん上記画面のようなフォームの状態で、ユーザーがアプリケーションを利用することもあるかもしれない。しかし開発者がこのサイズで利用されることを想定していなければ、何かしら問題が起こる可能性がある。例えば、サイズ変更によって隠された部分に何らかのメッセージを表示していた場合、開発者の意図に反してユーザーにそのメッセージを見てもらえないということが起こるだろう。

 また、コンピュータに詳しくない初心者ユーザーが誤ってこのようなサイズにフォームを変更してしまった場合、そのままのサイズの状態でアプリケーションを使って「マニュアルと画面表示が違う」などのクレームにつながってしまうかもしれない。このように、アプリケーションに無制限な自由度を与えると、逆にユーザビリティが低下してしまう可能性がある。

 これらのような問題が発生する可能性があるケースでは、やはりフォーム・サイズの変更範囲に制限をかけておいた方が無難だろう。フォームのサイズ制限を行うには、次のプロパティを設定するだけである。

  • フォームのMinimumSizeプロパティ(フォームの最小サイズ)
  • フォームのMaximumSizeプロパティ(フォームの最大サイズ)

 これらのプロパティには、Size構造体のオブジェクト(System.Drawing名前空間)を指定する。これらのプロパティ値はVisual Studio .NETでは、[プロパティ]ウィンドウから指定可能だが、コードで記述すれば次のようになる(thisやMeはフォームのインスタンスを参照している)。

// C#
this.MinimumSize = new System.Drawing.Size(200, 200);
this.MaximumSize = new System.Drawing.Size(500, 500);
' VB.NET
Me.MinimumSize = New System.Drawing.Size(200, 200)
Me.MaximumSize = New System.Drawing.Size(500, 500)

 このコードによるサイズ制限機能をサンプル・アプリケーションに実装したのが、次の画面のアプリケーションである。

サイズの変更範囲に制限があるアプリケーション
カーソルのある位置までフォームのサイズを小さくしようとしているが、サイズが幅200ピクセル、高さ200ピクセルよりも小さくならない。

 この画面のように、フォームのサイズ制限を実装したアプリケーションは、指定した最小サイズ〜最大サイズの範囲でしかフォームのサイズを変更することができない。もちろんサイズの制限は、最小サイズ/最大サイズのどちらか一方だけを指定することも可能だ。End of Article

カテゴリ:Windowsフォーム 処理対象:ウィンドウ
使用ライブラリ:Formクラス(System.Windows.Forms名前空間)
使用ライブラリ:FormBorderStyle列挙体(System.Windows.Forms名前空間)
 
この記事と関連性の高い別の.NET TIPS
Windowsアプリケーションの位置やサイズを保存するには?
配列のサイズを変更するには?(Resize編)
Windowsフォームで簡単に画像を表示するには?
各フォームの共通要素を基本フォームにまとめるには?
Xamarin.Forms:RelativeLayoutでコントロールを相対的に配置するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間