C#でWindowsフォームアプリケーションのフォームを最上位フォームとして表示する(最前面に表示する)方法を紹介します。
フォームを最上位フォームとして表示すると、Windowsのタスクマネージャーの「オプション」メニューにある「常に手前に表示」を指定した時と同様に、他のウィンドウ(フォーム)に隠れないウィンドウを作成できます。
本記事では、Visual Studioで作成したWindowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。
目次
フォームを最上位フォームとして表示する
フォームを最上位フォームとして表示する(最前面に表示する)には、System.Windows.Forms名前空間にあるFormクラスのTopMostプロパティを使用します。
TopMostプロパティはbool型になっていますので、TrueまたはFalseの真偽値を指定します。
デザイナーのプロパティグリッドで設定する
フォームを最上位フォームとして表示するかどうかはフォームデザイナーのプロパティグリッドで設定できます。
フォームデザイナーを開きます。
フォームデザイナーを開いたらプロパティウィンドウを表示します。
プロパティウィンドウが表示されていない場合はメニューバーの「表示」メニューにある「プロパティ ウィンドウ」をクリックするかF4キーを押してください。
上記の画像のプロパティグリッドは項目別ではなくアルファベット順で表示しています。
プロパティグリッドのTopMostプロパティのドロップダウンリストボックスから最上位フォームとして表示するかどうかを選択します。
最上位フォームとして表示する場合「True」最上位フォームとして表示しない(通常のフォームとして表示する)場合は「False」を選択します。
コードで設定する
フォームを最上位フォームとして表示するかどうかはコードで設定することもできます。
1 2 3 4 |
// フォームを最上位フォームにする Form form = new Form(); form.TopMost = true; form.Show(); |
1 2 3 4 |
// フォームを最上位フォームにしない Form form = new Form(); form.TopMost = false; form.Show(); |
サンプルプログラム
フォームを最上位フォームとして表示する(最前面に表示する)サンプルプログラムを作成します。
ユーザーインターフェース
フォームには最上位フォームとして表示するかどうかを指定するチェックボックス(checkBox1)、フォームのインスタンスを生成して表示するボタン(button1)、フォームのTopMostプロパティの状態を取得して表示するボタン(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 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { // コンストラクタ public Form1() { InitializeComponent(); } // 表示するフォームのインスタンス変数 private Form _form; // フォームを表示する private void button1_Click(object sender, EventArgs e) { try { // フォームのインスタンスの生成有無を確認する if (_form == null || _form.IsDisposed) { // フォームのインスタンスを生成する _form = new Form(); } // TopMostプロパティを設定 _form.TopMost = this.checkBox1.Checked; // フォームを表示する _form.Show(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } // TopMostプロパティの値を表示する private void button2_Click(object sender, EventArgs e) { try { if (_form == null) { return; } // TopMostプロパティの値を取得する bool topMost = _form.TopMost; // メッセージボックスで表示する MessageBox.Show(topMost.ToString()); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
プログラムの実行
プロジェクトをビルドして実行(デバッグ)して画面を表示します。
チェックボックスのチェックを付けてフォームを表示するbutton1をクリックします。
フォームが最上位フォームとして最前面に表示され、フォームを表示したフォームをクリックしても表示されたフォームは背面に移動しません。
チェックボックスのチェックを外してフォームを表示するbutton1をクリックします。
フォームが最前面に表示されますが、フォームを表示したフォームをクリックすると表示されたフォームは背面に移動します。