Windowsアプリケーションでは、デスクトップいっぱいにウィンドウを表示する「最大化表示」のほかに、ウィンドウの上下左右の枠と上部のタイトル・バーを非表示にして、ウィンドウ内部(=クライアント領域)をデスクトップ全体に表示する「フルスクリーン表示」がある(フルスクリーン表示では、デスクトップ最下部(デフォルト時)にあるタスク・バーも覆う)。
次の画面は、Visual Studio .NET 2003のIDEを、実際にフルスクリーンで表示したところだ。
Visual Studio .NET 2003のフルスクリーン表示
Visual Studio .NETのIDEで、ショートカット・キー[Alt]+[Shift]+[Enter]を押すか、メニュー・バーから[表示]−[全画面表示]を選択すると、IDEのウィンドウ内部がデスクトップ全体に広がって表示される。
本稿では、このようなフルスクリーン表示を行う方法を紹介する。
Windowsアプリケーションでのフルスクリーン表示
WindowsアプリケーションのWindowsフォームをフルスクリーンで表示するには、次の2つのプロパティを順番に設定する。
- WindowsフォームのFormBorderStyleプロパティ(フォームの境界線スタイル)に、FormBorderStyle列挙体(System.Windows.Forms名前空間)の「None(境界線なし)」を設定する
// C#のサンプル・コード:
this.FormBorderStyle = FormBorderStyle.None;
' VB.NETのサンプル・コード:
Me.FormBorderStyle = FormBorderStyle.None
2. WindowsフォームのWindowStateプロパティ(ウィンドウ状態)に、FormWindowState列挙体(System.Windows.Forms名前空間)の「Maximized(最大化)」を設定する
// C#のサンプル・コード:
this.WindowState = FormWindowState.Maximized;
' VB.NETのサンプル・コード:
Me.WindowState = FormWindowState.Maximized
この2つのプロパティは、必ずこの1→2の順番で設定する必要がある。そうしないと、タスク・バーが表示されたままになり、完全なフルスクリーン表示にならないので注意してほしい。
Windowsアプリケーションを起動から終了までずっとフルスクリーンで表示し続けるような場合は、この2つのプロパティをあらかじめWindowsフォーム・デザイナで設定するか、Windowsフォームのコンストラクタなどで設定すれば、フルスクリーン表示の対応は完了である。しかし、スクリーン・セーバーでもない限り、通常表示とフルスクリーン表示のモード切り替えが必要になるだろう。次に、この切り替え方法について紹介しよう。
フルスクリーン表示のモード切り替えに対応するには?
Windowsアプリケーションの表示をフルスクリーン表示に変更する方法は、先ほど述べたように、2つのプロパティを次のように設定すればよい。
- FormBorderStyleプロパティを「FormBorderStyle.None」に設定する
- WindowStateプロパティを「FormWindowState.Maximized」に設定する
逆に通常表示に戻すには、2つのプロパティを次のように設定する。
- FormBorderStyleプロパティに「FormBorderStyle.Sizable(サイズ変更可能な境界線スタイル)」を設定する
- WindowStateプロパティを「FormWindowState.Normal(通常の状態)」に設定する
これにより、フルスクリーン表示と通常表示を切り替えることが可能である。しかし、ここで1つ問題がある。フルスクリーン・モードに切り替える際、その直前のウィンドウの状態が「最大化表示」だった場合、フルスクリーン表示に切り替えてもタスク・バーが表示されたまま残ってしまうのだ(完全なフルスクリーン表示にはならない)。
この問題は、フルスクリーン表示する前に、最大化表示されているウィンドウをいったん「通常表示」にすることで回避できる*。
*この処理のために、フルスクリーン表示されるまでの間にウィンドウがちらつく場合がある。ただしこの動作はVisual Studio .NETのIDEなどでも同様である。
このための具体的なプロパティ設定の手順は次のようになる。
0. WindowStateプロパティを「FormWindowState.Normal」に設定する
1. FormBorderStyleプロパティを「FormBorderStyle.None」に設定する
2. WindowStateプロパティを「FormWindowState.Maximized」に設定する
さらに、「最大化表示」→「フルスクリーン表示」との表示のバランスをとるために、「フルスクリーン表示」→「最大化表示」の際にも、この2つの表示処理の間に「通常表示」を追加する(これをしないと、両者の表示のバランスを欠いて、見栄えが少し悪くなってしまう)。実際には、次のような手順でプロパティを設定する。
0. WindowStateプロパティを「FormWindowState.Normal」に設定する
1. FormBorderStyleプロパティを「FormBorderStyle.Sizable」に設定する
2. WindowStateプロパティを「FormWindowState.Maximized」に設定する
もしフルスクリーン表示を変更する前のウィンドウの状態が、「最大化表示」「通常表示」のどちらもあり得る場合には、そのウィンドウ状態で条件分岐して、上記のプロパティ設定手順の「0」を実行するかしないかを決定すればよい。
フルスクリーン表示のモード切り替えのサンプル・プログラム
本稿では、以上のフルスクリーン表示のモードを切り替えるための処理を実装した次のようなサンプル・プログラムを作成した。次の画面はサンプル・プログラムを最大化表示したところだ。
そして次の画面が、フルスクリーン表示したところだ。
このサンプル・プログラムの「フルスクリーン表示と通常表示の切り替え」に関するソース・コードは次のとおりだ(なお、サンプル・プログラム全体は、コードの下のタイトル欄にあるリンクからダウンロードできる)。
// フルスクリーン・モードかどうかのフラグ
private bool _bScreenMode;
// フルスクリーン表示前のウィンドウの状態を保存する
private FormWindowState prevFormState;
// 通常表示時のフォームの境界線スタイルを保存する
private FormBorderStyle prevFormStyle;
// 通常表示時のウィンドウのサイズを保存する
private Size prevFormSize;
private void Form1_Load(object sender, System.EventArgs e)
{
// フルスクリーン・モードで起動
_bScreenMode = true;
// フルスクリーン表示前のウィンドウの状態を保存する
prevFormState = FormWindowState.Normal;
// 通常表示時のフォームの境界線スタイルを保存する
prevFormStyle = FormBorderStyle.Sizable;
// 通常表示時のウィンドウのサイズを保存する
prevFormSize = new Size(496, 219);
}
private void button1_Click(object sender, System.EventArgs e)
{
if (_bScreenMode == false)
{
// <フルスクリーン表示への切り替え処理>
// ウィンドウの状態を保存する
prevFormState = this.WindowState;
// 境界線スタイルを保存する
prevFormStyle = this.FormBorderStyle;
// 0. 「最大化表示」→「フルスクリーン表示」では
// タスク・バーが消えないので、いったん「通常表示」を行う
if (this.WindowState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Normal;
}
// フォームのサイズを保存する
prevFormSize = this.ClientSize;
// 1. フォームの境界線スタイルを「None」にする
this.FormBorderStyle = FormBorderStyle.None;
// 2. フォームのウィンドウ状態を「最大化」する
this.WindowState = FormWindowState.Maximized;
// ボタンの表示を変更する
this.button1.Text = "通常表示する";
// フルスクリーン表示をONにする
_bScreenMode = true;
}
else
{
// <通常表示/最大化表示への切り替え処理>
// フォームのウィンドウのサイズを元に戻す
this.ClientSize = prevFormSize;
// 0. 最大化表示に戻す場合にはいったん通常表示を行う
// (フルスクリーン表示の処理とのバランスと取るため)
if (prevFormState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Normal;
}
// 1. フォームの境界線スタイルを元に戻す
this.FormBorderStyle = prevFormStyle;
// 2. フォームのウィンドウ状態を元に戻す
this.WindowState = prevFormState;
// ボタンの表示を変更する
this.button1.Text = "フルスクリーン表示する";
// フルスクリーン表示をOFFにする
_bScreenMode = false;
}
}
サンプル・プログラムのダウンロード(fullscreen.cs)
' フルスクリーン表示かどうかのフラグ
Private _bScreenMode As Boolean
' フルスクリーン表示前のウィンドウの状態を保存する
Private prevFormState As FormWindowState
' 通常表示時のフォームの境界線スタイルを保存する
Private prevFormStyle As FormBorderStyle
' 通常表示時のウィンドウのサイズを保存する
Private prevFormSize As Size
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' フルスクリーン表示で起動
_bScreenMode = True
' フルスクリーン表示前のウィンドウの状態を保存する
prevFormState = FormWindowState.Normal
' 通常表示時のフォームの境界線スタイルを保存する
prevFormStyle = FormBorderStyle.Sizable
' 通常表示時のウィンドウのサイズを保存する
prevFormSize = New Size(496, 219)
End Sub
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
If (_bScreenMode = False) Then
' <フルスクリーン表示への切り替え処理>
' ウィンドウの状態を保存する
prevFormState = Me.WindowState
' 境界線スタイルを保存する
prevFormStyle = Me.FormBorderStyle
' 0. 「最大化表示」→「フルスクリーン表示」では
' タスク・バーが消えないので、いったん「通常表示」を行う
If Me.WindowState = FormWindowState.Maximized Then
Me.WindowState = FormWindowState.Normal
End If
' フォームのサイズを保存する
prevFormSize = Me.ClientSize
' 1. フォームの境界線スタイルを「None」にする
Me.FormBorderStyle = FormBorderStyle.None
' 2. フォームのウィンドウ状態を「最大化」する
Me.WindowState = FormWindowState.Maximized
' ボタンの表示を変更する
Me.button1.Text = "通常表示する"
' フルスクリーン表示をONにする
_bScreenMode = True
Else
' <通常表示/最大化表示への切り替え処理>
' フォームのウィンドウのサイズを元に戻す
Me.ClientSize = prevFormSize
' 0. 最大化表示に戻す場合にはいったん通常表示を行う
' (フルスクリーン表示の処理とのバランスと取るため)
If prevFormState = FormWindowState.Maximized Then
Me.WindowState = FormWindowState.Normal
End If
' 1. フォームの境界線スタイルを元に戻す
Me.FormBorderStyle = prevFormStyle
' 2. フォームのウィンドウ状態を元に戻す
Me.WindowState = prevFormState
' ボタンの表示を変更する
Me.button1.Text = "フルスクリーン表示する"
' フルスクリーン表示をOFFにする
_bScreenMode = False
End If
End Sub
サンプル・プログラムのダウンロード(fullscreen.vb)
上記のコードでは、フルスクリーン表示に切り替える前に、「現在のウィンドウの状態」「境界線のスタイル」「ウィンドウのサイズ」を保存し、フルスクリーン表示を解除したときに、これらの保存した情報を再設定することで、ウィンドウをフルスクリーン表示前と同じ状態に戻している。
カテゴリ:Windowsフォーム 処理対象:ウィンドウ
使用ライブラリ:Formクラス(System.Windows.Forms名前空間)
使用ライブラリ:FormBorderStyle列挙体(System.Windows.Forms名前空間)
使用ライブラリ:FormWindowState列挙体(System.Windows.Forms名前空間)
使用ライブラリ:Sizeクラス(System.Drawing名前空間)
Copyright© Digital Advantage Corp. All Rights Reserved.