军 的 (转)c# 托动无边框窗体
第一步:        //先定义一个坐标点对象 mypoint
        private Point mypoint;第二步:在窗体的点击事件中写         private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            //鼠标在窗体内按下时,自动记录鼠标的 x y 值,并将它们改为负数
            mypoint = new Point(-e.X,-e.Y);
        }第三步:在窗体的鼠标移动事件中写private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            /*
                鼠标在窗体内移动时,首先判断e.Button按下的是哪个鼠标按钮再判断
             * 是否等于左键按下,MouseButtons.Left这句的意思是鼠标左键按下状态
             */
            if (e.Button == MouseButtons.Left)
            {
                /*新建一个坐标点对象,它的坐标等于(Control.MousePosition;)
                 * 桌面上坐标的位置
                 */
                Point myposition = Control.MousePosition;
                /*
                    myposition.offset中的Offset是坐标平移的意思,现在将在窗体
                 * 内点击左键时产生的负数加进来,也就等于 现在鼠标在桌面上的坐标
                 * 减去鼠标在窗体内的坐标位置,就等于现在窗体的位置
                 */
                myposition.Offset(mypoint.X, mypoint.Y);
                /*
                 this.DesktopLocation这句的意思是获取或设置窗体在桌面上的位置
                 * 它的位置来自myposition
                 */
                this.DesktopLocation = myposition;
            }(本文以上转载别人文章) Point myposition = Control.MousePosition;
                /*
                    myposition.offset中的Offset是坐标平移的意思,现在将在窗体
                 * 内点击左键时产生的负数加进来,也就等于 现在鼠标在桌面上的坐标
                 * 减去鼠标在窗体内的坐标位置,就等于现在窗体的位置
                 */
                myposition.Offset(mypoint.X, mypoint.Y);
                /*
                 this.DesktopLocation这句的意思是获取或设置窗体在桌面上的位置
                 * 它的位置来自myposition
                 */
                this.DesktopLocation = myposition;
看了很久,看不大懂,如何让窗体移动的,这是个什么原理,为什么要减去mypoint的坐标!请各位高手指点!