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; }
    }
  • 相关阅读:
    教你开发jQuery插件(转)
    PHP7CMS 无条件前台GETSHELL
    如何利用GitHub搜索敏感信息
    YOU种你来丨i春秋校园行第一站北京电子科技学院
    超有料丨小白如何成功逆袭为年薪30万的Web安全工程师
    SQL基本注入演示
    从SQL注入到内网漫游
    与你有关丨微信可能隐藏着这样的安全隐患
    业务逻辑漏洞探索之敏感信息泄露
    Web安全之XSS Platform搭建及使用实践
  • 原文地址:https://www.cnblogs.com/shadowpigg/p/14025333.html
Copyright © 2011-2022 走看看