フォームを常に最背面に表示する
スポンサーリンク
フォームを常に最背面に表示したい場合は、Win32 API に頼ることになります。FindWindow 関数で Program Manager という特別なウィンドウ ハンドルを得て、そのハンドルを SetParent 関数で親ウィンドウのハンドルにすることで再背面を実現します。
まずは、ベタな方法からやってみましょう。初めに、API の宣言をしておく必要があります。
サンプルコード
以下にサンプルコードを示します。
C# 全般
// 以下の名前空間をインポートする using System.Runtime.InteropServices; public class Form1 : System.Windows.Forms.Form { Windows フォーム デザイナで生成されたコード // FindWindow 関数 [DllImport("USER32.DLL", CharSet=CharSet.Auto)] private static extern System.IntPtr FindWindow( string lpClassName, string lpWindowName ); // SetParent 関数 [DllImport("USER32.DLL", CharSet=CharSet.Auto)] private static extern System.IntPtr SetParent( System.IntPtr hWndChild, System.IntPtr hWndNewParent ); // ここから先が使用例になります private void button1_Click(object sender, System.EventArgs e) { // Program Manager のハンドルを取得する System.IntPtr hProgramManagerHandle = FindWindow(null, "Program Manager"); // 正しく取得できた場合は、Program Manager を親ウィンドウに設定する if (! hProgramManagerHandle.Equals(System.IntPtr.Zero)) { SetParent(this.Handle, hProgramManagerHandle); } } }
次に TopMost プロパティに習って、BottomMost プロパティのようなものを作ってみましょう。このプロパティを true に設定すると再背面での表示になり、false に設定すると元に戻るようなイメージになります。
ここから先は保留中...
関連するリファレンス
準備中です。