该如何使子窗体在父窗体中不可拖动呢?

解决方案 »

  1.   

    1。去掉标题栏
    2。写两个事件处理方法,a 子窗口load中保存该窗口的当前位置 b 在其位置变化事件中,将窗口的位置还原为a中保存的位置
      

  2.   

            
    不用管什么窗口,使用下面的代码就行了,欺骗Windows        private const int WM_SYSCOMMAND = 0x0112;
            private const int SC_MOVE = 0xF010;
            private const int HTCAPTION = 2;
            private const int HTNOWHERE = 0;
            private const int HTCLIENT = 1;        protected override void WndProc(ref System.Windows.Forms.Message e)
            {
                if (e.Msg == WM_SYSCOMMAND)
                {
                    // 如果鼠标正在标题栏,并且拖动中
                    if (e.WParam == (IntPtr)(HTCAPTION + SC_MOVE))
                    {
                        // 也可以修改为HTCLIENT,让系统以为鼠标不在标题栏
                        e.WParam = (IntPtr)HTNOWHERE; 
                    }
                }
                base.WndProc(ref e);
            } 
      

  3.   

    TO 1# 标题栏我想要,想要那个关闭功能
    TO 3# 是子窗体一弹出后就被固定,完全不能移动.
    TO 5# 谢谢了,先去试试看
      

  4.   

    谢谢ZengHD
    成功了
    o(∩_∩)o