1. 程式人生 > >C# winform 無邊框窗體滑鼠點選移動事件

C# winform 無邊框窗體滑鼠點選移動事件

這裡所謂的無邊框窗體是指去除系統自帶的標題欄和最大最小化等那周圍一圈的窗體

即把窗體的FormBorderStyle設定為none後的窗體(效果如下)

這是有邊框的:


去除邊框的:


右邊框窗體想要移動位置,用滑鼠點選標題欄移動即可,那麼沒邊框的該如何移動這個問題,我也是糾結了好久。

有人可能覺得幹嘛要去除邊框,因為我覺得QQ那樣的登入窗體比較好看,自己再去做最小化按鈕和關閉按鈕。

好了,正題,該如何移動!

【Answers】

<span style="white-space:pre">	</span>//初始化
        bool beginMove = false;
        int currentXPosition;
        int currentYPosition;
        private void LoginForm_MouseDown(object sender, MouseEventArgs e)
        {
            //將滑鼠座標賦給窗體左上角座標
            beginMove = true;
            currentXPosition = MousePosition.X;
            currentYPosition = MousePosition.Y;
            this.Refresh();
        }

        private void LoginForm_MouseLeave(object sender, EventArgs e)
        {
            //設定初始狀態
            currentXPosition = 0;
            currentYPosition = 0;
            beginMove = false;
        }

        private void LoginForm_MouseMove(object sender, MouseEventArgs e)
        {
            if(beginMove)
            {
                //根據滑鼠X座標確定窗體X座標
                this.Left += MousePosition.X - currentXPosition;
                //根據滑鼠Y座標確定窗體Y座標
                this.Top += MousePosition.Y - currentYPosition;
                currentXPosition = MousePosition.X;
                currentYPosition = MousePosition.Y;
            }
        }

        private void LoginForm_MouseUp(object sender, MouseEventArgs e)
        {
            beginMove = false;
        }
其實很簡單對吧。

END.