首页 > 移动平台 > 详细

鼠标移动 ListView 控件的处理方法

时间:2021-05-22 10:40:55      阅读:13      评论:0      收藏:0      [点我收藏+]

原因: 由于 ListView 控件的 Mouse 相关事件无法获取 MouseButtons.Left 属性,从而 无法使用 MouseDown,MouseMove 事件在MouseButtons.Left 的情况下使其移动,

解决:用一个 Timer 对 MouseEventArgs 的 Button 进行检测,替换 ListView 控件的 MouseMove 事件处理

   public class Mover
            {

                 int locX, locY, mpX, mpY;
                 MouseEventArgs mea;
                 Timer timer = new Timer();
                 ListView lv;

                public Mover(ListView lv)
                {
                    this.lv = lv;

                    lv.MouseEnter += _MouseEnter;
                    lv.MouseDown += _MouseDown;
                    lv.MouseUp += _MouseUp;

                    timer.Tick += timer_Tick;
                }

                #region 

                public  void _MouseDown(object sender, MouseEventArgs e)
                {
                    mea = e;
                    lv = sender as ListView;
                    //拖动	
                    lv.BringToFront();
                    lv.Cursor = Cursors.Hand;

                    locX = lv.Location.X;
                    locY = lv.Location.Y;
                    mpX = Control.MousePosition.X;// e.X;
                    mpY = Control.MousePosition.Y;
                }
                public  void _MouseUp(object sender, MouseEventArgs e)
                {
                    timer.Stop();

                    mea = null;
                    lv.Cursor = Cursors.Default;
                }
                public  void _MouseEnter(object sender, EventArgs e)
                {
                    timer.Start();
                }
                private  void timer_Tick(object sender, EventArgs e)
                {
                    if (mea == null)
                        return;

                    if (mea.Button == MouseButtons.Left)
                    {
                        locX += Control.MousePosition.X - mpX;
                        locY += Control.MousePosition.Y - mpY;
                        mpX = Control.MousePosition.X;
                        mpY = Control.MousePosition.Y;
                        lv.Location = new Point(locX, locY);
                    }
                }

                #endregion
            }

  

交流 QQ : 2412366909@qq.com

手机号码:177-7499-4428

注:本人使用过程中暂未发现造成存取不正确的问题

鼠标移动 ListView 控件的处理方法

原文:https://www.cnblogs.com/grCod/p/14797762.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!