5.3 タイトルバーの設定
5.3.1 タイトルバーのテキスト
通常、ウィンドウ上部のタイトルバーにはアプリケーションのタイトルや現在操作しているファイル名などが表示されます。ここに何を表示するかはアプリケーションが自由に設定できますが、一般的にはアプリケーション名やウィンドウ名を表示します。
図1は、Windows 標準のメモ帳のタイトルバーです。メモ帳は、現在表示しているテキストファイルの名前と、アプリケーション自身の名前(すなわち「メモ帳」)が表示されます。
フォームのタイトルバーにテキストを表示するには Control クラスの Text プロパティからテキストを設定します。この Text プロパティに設定した文字列がどのように表示されるか、または表示されないかは、Control クラスを継承するサブクラスに委ねられています。
public virtual string Text { get; set; }
Form クラスの場合、表示するフォームのタイトルバーに Text で設定されている文字列を表示します。
using System.Windows.Forms; public class Test { static void Main() { Form form = new Form(); form.Text = "Kitty on your lap"; Application.Run(form); } }
コード1は、Form オブジェクトの Text に文字列を設定してフォームを表示しています。表示されたウィンドウのタイトルバーに、設定した文字列が表示されていることを確認することができます。このテキストはアプリケーションウィンドウの切り替えやタスクマネージャなどのシステム操作でも利用されるので、可能な限りウィンドウを一意に認識できるような名前が好ましいと思われます。
5.3.2 最大化と最小化
ウィンドウのタイトルバーの右側隅には、ウィンドウの最小化、最大化を行うボタンが表示されています。通常のアプリケーションではこれらのボタンがあることに問題はありませんが、ツールウィンドウ的な目的のフォームの場合や、サイズ変更を許可できないゲームプログラムのような場合は最大化ボタンを表示させたくないと考えることでしょう。
最小化、最大化ボタンを隠し、ユーザーがウィンドウを最小化、最大化できないようにするには Form クラスの MinimizeBox プロパティと MaximizeBox プロパティを設定します。MinimizeBox は最小化ボタンを、MaximizeBox は最大化ボタンを表示するかどうかを表しています。
public bool MinimizeBox { get; set; }
public bool MaximizeBox { get; set; }
ボタンを表示する場合は true を、非表示にする場合は false を設定します。ユーザーに操作によってウィンドウが最小化されたり、最大化されるのを防ぎたい場合は false を設定してください。デフォルトでは true が設定されています。
using System.Windows.Forms; public class Test { static void Main() { Form form = new Form(); form.MinimizeBox = false; form.MaximizeBox = false; Application.Run(form); } }
コード2は、MinimizeBox と MaximizeBox プロパティを false に設定することで最小化と最大化ボタンを非表示にしています。同時に、このウィンドウはシステムメニューからの最小化、最大化の操作も受け付けなくなります。
図3はコード2で作成したアプリケーションのシステムメニューを表示したものです。最小化、最大化メニューが無効化されていることを確認してください。
また、最大化や最小化ボタンを表示するには、境界線スタイルが FixedSingle、Sizable、Fixed3D 、または FixedDialog のいずれかでなければなりません。境界線が表示されない None やツールウィンドウを表す FixedToolWindow や SizableToolWindow では、MinimizeBox と MaximizeBox プロパティの設定に関係なく、ボタンは表示されません。
5.3.3 基本機能を無効化する
通常のビジネスアプリケーションの開発では、Windows が基本機能として提供しているタイトルバーの各種ボタンはすべてが必要なもので、これらを無効化してしまうことに大きなメリットはありません。しかし、ゲームアプリケーションの場合、その多くが独自の世界観を演出するために、こうしたウィンドウの基本機能を表示させないという方法を採用することがあります。
システムメニュー、最小化、最大化、閉じるボタンのすべてを完全に無効化するには Form クラスの ControlBox プロパティを設定します。
public bool ControlBox { get; set; }
このプロパティはデフォルトで true に設定されています。タイトルバーのコントロール機能を非表示にするには、このプロパティに false を設定してください。
using System.Windows.Forms; public class Test : Form { static void Main() { Form form = new Test(); form.ControlBox = false; form.FormBorderStyle = FormBorderStyle.Fixed3D; form.Text = "Kitty on your lap"; Application.Run(form); } }
コード3は、境界線を Fixed3D に設定し、タイトルバーに余計なシステムボタンが表示されないように ControlBox プロパティを false に設定しています。表示されたウィンドウのタイトルバーにはテキストしか表示されていません。ただし、ControlBox を false に設定し、さらに Text プロパティが設定されていない場合はタイトルバーそのものが表示されなくなります。 境界線を表示しつつタイトルバーを消したい場合は、ControlBox を false に、Text を null に設定します。
コード3は閉じるボタンが無いので終了することができません。タスクマネージャらから強制終了してください。