zoukankan      html  css  js  c++  java
  • C# 拖动控件 不闪

    如何让控件支持拖动(不是拖放)呢?很简单的

    只需要处理鼠标按下、移动、释放三个消息就可以了,按下时开始记录鼠标位置,移动时计算鼠标移动距离,重设控件位置,鼠标释放时结束拖动

    下面这段代码可以直接应用于任何控件,参数Control是所有控件的基类,因此可以应用于任何控件

    m_OnDrag标示是否在拖动中

    m_LastPoint记录上一次鼠标的位置

    这里面没有使用事件参数提供的鼠标位置,因为这个值飘得厉害,会闪,用Cursor.Position就不会闪

    PointToClient用来把屏幕坐标换算成客户区位置

        class DragControl
        {
            static public bool m_OnDrag = false;
            static private Point m_LastPoint = new Point();
            static public void EnableDrag(Control control)
            {
                //添加事件处理程序
                control.MouseDown += new MouseEventHandler(MouseDown);
                control.MouseMove += new MouseEventHandler(MouseMove);
                control.MouseUp += new MouseEventHandler(MouseUp);
            }
            static private void MouseDown(object sender, MouseEventArgs e)
            {
                Control control = (Control)sender;
                Point newpoint = control.Parent.PointToClient(Cursor.Position);
    
                m_LastPoint = newpoint;
                m_OnDrag = true;
            }
            static private void MouseMove(object sender, MouseEventArgs e)
            {
                if (m_OnDrag)
                {
                    Control control = (Control)sender;
                    Point newpoint=control.Parent.PointToClient(Cursor.Position);
                    
                   Point tmp=new Point(control.Location);//这几句临时写的,未经测试(因为原来的代码涉及到别的内容) 
             tmp.X
    += newpoint.X - m_LastPoint.X; tmp.Y += newpoint.Y - m_LastPoint.Y;
             control.Location=tmp;
    m_LastPoint = newpoint; } } static private void MouseUp(object sender, MouseEventArgs e) { m_OnDrag = false; }
    }
  • 相关阅读:
    kettle连接MySQL报错
    git切换到某个tag, 从tag切换回当前分支
    wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)
    linux下python3.6.7安装
    haproxy backup模式
    Oracle_2 随便写写
    Oracle 日期函数练习 随便写写
    RabbitMQ
    X.509标准、CA认证
    docker-compose和Dockerfile的volumes
  • 原文地址:https://www.cnblogs.com/shadowpigg/p/14025333.html
Copyright © 2011-2022 走看看