大家知道 form 有个 TopMost属性,可以让窗口置于同级窗口最上层!
那我想要实现,窗口一直在其他软件的最下层,类似windows桌面一样,开任何程序都可以在它之上,该如何做呢?

解决方案 »

  1.   

    不大了解http://topic.csdn.net/t/20020426/16/679185.html 参考一下
      

  2.   

    this.SendToBack();
    this.BringToFront();
      

  3.   

     
            private void Form2_Paint(object sender, PaintEventArgs e)
            {
                this.SendToBack();
            }
      

  4.   

    using   System.Runtime.InteropServices;   
        
        
      在定义部分引入下面两个函数:   
      [DllImport("user32")]   
      private   static   extern   IntPtr   FindWindow(string   lpClassName,string   lpWindowName);   
        
      [DllImport("user32")]   
      private   static   extern   IntPtr   SetParent(IntPtr   hWndChild,   IntPtr   hWndNewParent);   
        
      在窗体On_Load事件中添加(Santos的代码):   
      IntPtr   hDeskTop=FindWindow("Progman",   "Program   Manager");   
      SetParent(this.Handle,hDeskTop); 
      

  5.   

    将form的TopMost设置成false不就可以了吗?
      

  6.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
    namespace WindowsFormsApplication8
    {
        public class WindowUtil
        {
            [DllImport("User32.dll", EntryPoint = "FindWindow")]
            public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);        [DllImport("user32")]
            public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);        private static IntPtr hDeskTop = IntPtr.Zero;       //桌面句柄        /// <summary>
            /// 将传入窗口句柄的窗体钉在桌面
            /// </summary>
            /// <param name="hWindow"></param>
            public static void SetLockOnDesk(IntPtr hWindow)
            {
                IntPtr hDeskTop = FindWindow("Progman", null);
                SetParent(hWindow, hDeskTop);
            }
            /// <summary>
            /// 将传入窗口句柄的窗体取消钉在桌面
            /// </summary>
            /// <param name="hWindow"></param>
            public static void ClearLockOnDesk(IntPtr hWindow)
            {
                SetParent(hWindow, IntPtr.Zero);
            }
        }
    }调用方式:
    //钉在桌面,传入窗口句柄
    private void btnLock_Click(object sender, EventArgs e)
    {
       WindowUtil.SetLockOnDesk(this.Handle);
    }
    //取消钉在桌面
    private void btnUnlock_Click(object sender, EventArgs e)
    {
         WindowUtil.ClearLockOnDesk(this.Handle);
    }