1. 程式人生 > >C#Winform實現無邊框窗體滑鼠拖動

C#Winform實現無邊框窗體滑鼠拖動

    在有時候我們為了實現軟體的美觀,我們需要把窗體的邊框隱藏,但是問題也會隨之而來,在屬性中設定了FormBorderStyle應該為None,邊框便可以隱藏,但是我們在使用軟體時卻無法拖動窗體,那麼我們該如何解決這個問題呢。其實程式碼很簡單,只要override  WndProc方法便可。在無邊框窗體的程式碼中加入下面的protected override void WndProc(ref Message m)方法便可。
  具體程式碼如下:
 protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case 0x4e:
                case 0xd:
                case 0xe:
                case 0x14:
                    base.WndProc(ref m);
                    break;
                case 0x84://滑鼠點任意位置後可以拖動窗體
                    this.DefWndProc(ref m);
                    if (m.Result.ToInt32() == 0x01)
                    {
                        m.Result = new IntPtr(0x02);
                    }
                    break;
                case 0xA3://禁止雙擊最大化
                    break;
                default:
                    base.WndProc(ref m);
                    break;
            }
        }
實現窗體無邊框程式碼為:
  private void Form1_Load(object sender, EventArgs e)
        {
            this.FormBorderStyle = FormBorderStyle.None;//無邊框
        }