1. 程式人生 > >C#去邊框以及無邊框窗體移動

C#去邊框以及無邊框窗體移動

1.去邊框  :

1) 選中要去除邊框的窗體,按F4調出窗體屬性。

2)在屬性框中找到FormBorderStyle選擇none。


去邊框之前效果


去邊框之後效果


2.去掉邊框後實現對視窗程式的拖動

1)雙擊窗體,進入程式設計介面 新增  using System.Runtime.InteropServices; 

在 { InitializeComponent();  } 後新增以下程式碼

        [DllImport("user32.dll")]
        public static extern bool ReleaseCapture();
        [DllImport("user32.dll")]
        public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
        


        bool beginMove = false;//初始化滑鼠位置
        int currentXPosition;
        int currentYPosition;


2)回到窗體介面,點選

如圖所示:屬性框上部有個小閃電,點選進入 事件頁面


2)分別點選進入MouseDown 、 MouseMove、MouseUp 並分別新增以下程式碼

 //獲取滑鼠按下時的位置
        private void loginForm_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                beginMove = true;
                currentXPosition = MousePosition.X;//滑鼠的x座標為當前窗體左上角x座標
                currentYPosition = MousePosition.Y;//滑鼠的y座標為當前窗體左上角y座標
            }
        }
        //獲取滑鼠移動到的位置
        private void loginForm_MouseMove(object sender, MouseEventArgs e)
        {
            if (beginMove)
            {
                this.Left += MousePosition.X - currentXPosition;//根據滑鼠x座標確定窗體的左邊座標x
                this.Top += MousePosition.Y - currentYPosition;//根據滑鼠的y座標窗體的頂部,即Y座標
                currentXPosition = MousePosition.X;
                currentYPosition = MousePosition.Y;
            }
        }

   //釋放滑鼠時的位置
        private void loginForm_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                currentXPosition = 0; //設定初始狀態
                currentYPosition = 0;
                beginMove = false;
            }
        }

3.測試你的窗體程式吧