移动无边框Winform

时间:2014-6-12    作者:悬浮的青春    分类: .net相关


因为窗体无边框所以事件不能写在窗体的mouse事件中,因为无法触发。可以写在放在顶部的某个控件中,可以是panel也可以是picturebox

 

例如我就是在顶部放了个picture。

 

分别触发picturebox的三个mouse事件,分别是mousedown,mousemove,mouseup。

 

Point mouseOff;//鼠标移动位置变量    

    bool leftFlag;//标记是否为左键       

 

 privatevoid picturebox_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                mouseOff = new Point(-e.X, -e.Y); //得到变量的值
                leftFlag = true;                  //点击左键按下时标记为true;
            }
        }

        private void picturebox_MouseMove(object sender, MouseEventArgs e)
        {
            if (leftFlag)
            {
                Point mouseSet = Control.MousePosition;
                mouseSet.Offset(mouseOff.X, mouseOff.Y);  //设置移动后的位置
                Location = mouseSet;
            }
        }

        private void picturebox_MouseUp(object sender, MouseEventArgs e)
        {
            if (leftFlag)
            {
                leftFlag = false;//释放鼠标后标记为false;
            }
        }

 

 

然后你就可以在picture上拖动整个窗体了!

标签: net

WRITTEN BY

avatar