c# 鼠标点击控件即拖动窗体

本文介绍了如何在无边框窗体中使用Panel控件,通过重写MouseDown和MouseMove事件,实现鼠标悬停时窗体的拖动效果。主要涉及代码实现和操作流程。

 在编程中,有时打开的窗体没有边框,但是我们仍然想在鼠标放在窗体上就能拖动窗体,这样我们只需要以窗体中的一个控件为参考,我们在这里以panel为例子:

    public class PanelNew : PanelEx
    {
        private Point CPoint = new Point();
        protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
        {
            CPoint.X = -e.X;
            CPoint.Y = -e.Y;
            base.OnMouseDown(e);
        }
        protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs e)
        {
            if (this.Parent is Form)
            {
                if (e.Button == MouseButtons.Left)
                {
                    Point myPosittion = Control.MousePosition;//获取当前鼠标的屏幕坐标 
                    myPosittion.Offset(CPoint.X, CPoint.Y);//重载当前鼠标的位置 
                    (this.Parent as Form).DesktopLocation = myPosittion;//设置当前窗体在屏幕上的位置 
                }
            }
            base.OnMouseMove(e);
        }
    }
View Code

我在这里是直接创建了一个新的控件,如果直接在窗体的控件上操作,只需要在控件相应的事件中填入代码就行了。

转载于:https://www.cnblogs.com/sczmzx/p/3370959.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值