WinForm 移动无边框窗体

 


this.TransparencyKey = System.Drawing.SystemColors.Control;//透明色

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;//无边框

 

class FormMove
    {
        private bool isMouseDown = false; private System.Drawing.Point FormLocation;     //form的location       
        private System.Drawing.Point mouseOffset;      //鼠标的按下位置       
        private Form movedForm = null;
        private Control conObj = null;
        private FormMove() { }

        /// <summary>       
        ///        
        /// </summary>       
        /// <param name="movedForm">要移动的窗体</param>       
        /// <param name="conObj">控制窗体移动的控件,为null,则是窗体本身</param>       
        public FormMove(Form movedForm, Control conObj)
        {
            this.movedForm = movedForm;
            this.conObj = (conObj == null) ? movedForm : conObj;
            this.conObj.MouseDown += new MouseEventHandler(ConObj_MouseDown);
            this.conObj.MouseMove += new MouseEventHandler(ConObj_MouseMove);
            this.conObj.MouseUp += new MouseEventHandler(ConObj_MouseUp);
        }

        private void ConObj_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                isMouseDown = true;
                FormLocation = movedForm.Location;
                mouseOffset = Control.MousePosition;
                this.conObj.Cursor = System.Windows.Forms.Cursors.SizeAll;
            }
        }
        private void ConObj_MouseUp(object sender, MouseEventArgs e)
        {
            this.conObj.Cursor = System.Windows.Forms.Cursors.Default;
            isMouseDown = false;
        }

        private void ConObj_MouseMove(object sender, MouseEventArgs e)
        {
            if (isMouseDown)
            {
                int _x = 0; int _y = 0;
                System.Drawing.Point pt = Control.MousePosition;
                _x = mouseOffset.X - pt.X; _y = mouseOffset.Y - pt.Y;
                movedForm.Location = new System.Drawing.Point(FormLocation.X - _x, FormLocation.Y - _y);
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值