[C#]フォームを最前面・最背面に移動させる

ウィンドウを最背面にしたい場合はFormが持っているプロパティのTopMostプロパティをtrueにします。
但し、TopMostにしてしまうと常に最前面のままになってしまうため、直ぐにfalseに戻してあげれば、一時的に最前面に移動させる事ができます

 
private void Button1_Click(object sender, EventArgs e) {
    this.TopMost = true;
    this.TopMost = false;
}



逆に、ウィンドウを最背面にしたい場合は、Win32APIを使用します。
Program Managerのという特別なウィンドウの子ウィンドウとして自分をセットする事で、最背面に表示させます。
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
 
private void Button1_Click(object sender, EventArgs e) {
    IntPtr WinHandle = FindWindow(null, "Program Manager");
    if ( WinHandle != null ) {
        SetParent( this.Handle, WinHandle );
    }
}

究極のC#プログラミング ~新スタイルによる実践的コーディング

関連記事

コメントを残す

メールアドレスが公開されることはありません。