フォームを常に最背面に表示する
スポンサーリンク
フォームを常に最背面に表示したい場合は、Win32 API に頼ることになります。FindWindow 関数で Program Manager という特別なウィンドウ ハンドルを得て、そのハンドルを SetParent 関数で親ウィンドウのハンドルにすることで再背面を実現します。
まずは、ベタな方法からやってみましょう。初めに、API の宣言をしておく必要があります。
サンプルコード
以下にサンプルコードを示します。
VB.NET 全般
Option Strict On ' 以下の名前空間をインポートする Imports System.Runtime.InteropServices Public Class Form1 : Inherits System.Windows.Forms.Form Windows フォーム デザイナで生成されたコード ' FindWindow 関数 <DllImport("USER32.DLL", CharSet:=CharSet.Auto)> _ Private Shared Function FindWindow( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As System.IntPtr End Function ' SetParent 関数 <DllImport("USER32.DLL", CharSet:=CharSet.Auto)> _ Private Shared Function SetParent( _ ByVal hWndChild As System.IntPtr, _ ByVal hWndNewParent As System.IntPtr) As System.IntPtr End Function ' ここから先が使用例になります Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click ' Program Manager のハンドルを取得する Dim hProgramManagerHandle As System.IntPtr = FindWindow(Nothing, "Program Manager") ' 正しく取得できた場合は、Program Manager を親ウィンドウに設定する If Not hProgramManagerHandle.Equals(System.IntPtr.Zero) Then SetParent(Me.Handle, hProgramManagerHandle) End If End Sub End Class
次に TopMost プロパティに習って、BottomMost プロパティのようなものを作ってみましょう。このプロパティを true に設定すると再背面での表示になり、false に設定すると元に戻るようなイメージになります。
ここから先は保留中...
関連するリファレンス
準備中です。