devExpress之GridView小技巧(一):实现拖拽多选

原创 2012年09月03日 16:19:00

GridView可以通过Shift键或Ctrl键以及Ctrl+A快捷键实现多选,但是默认不支持拖拽多选,好像也没有设置的方法。这样虽然没什么问题,但是肯定会给用户带来不便。
首先要设置OptionsSelection中的MultiSelect为true,也就是允许多选,否则下面的一切都是浮云。

本文通过以下代码实现拖拉多选的功能,主要是编写MouseDownMouseMoveMouseUp三个函数。

这里需要注意一下GridHitInfo,这个类可以根据xy坐标获取该点在GridView中的相关信息,例如在哪行哪列哪个单元格内,或者是否在单元格里。

 

        //用于记录,鼠标是否已按下

        bool isMouseDown = false;

 

        //用于鼠标拖动多选,标记是否记录开始行

        bool isSetStartRow = false;

 

        //用于鼠标拖动多选,记录开始行

        private int StartRowHandle = -1;

 

        //用于鼠标拖动多选,记录现在行

        private int CurrentRowHandle = -1;

 

        //用于实现鼠标拖动选择多行功能中的一个方法,对单元格区域进行选中

        private void SelectRows(int startRow, int endRow)

        {

            if (startRow > -1 && endRow > -1)

            {

                gridView.BeginSelection();

                gridView.ClearSelection();

                gridView.SelectRange(startRow, endRow);

                gridView.EndSelection();

            }

        }

 

        //实现鼠标拖动选择多行 ,鼠标按下事件

        private void gridView_MouseDown(object sender, MouseEventArgs e)

        {

            if (e.Button == MouseButtons.Left)

            {

                isMouseDown = true;

            }

        }

 

        //实现鼠标拖动选择多行 ,鼠标移动时

        private void gridView_MouseMove(object sender, MouseEventArgs e)

        {

            if (isMouseDown)

            {

                GridHitInfo info = gridView.CalcHitInfo(e.X, e.Y);

 

                //如果鼠标落在单元格里

                if (info.InRow)

                {

                    if (!isSetStartRow)

                    {

                        StartRowHandle = info.RowHandle;

                        isSetStartRow = true;

                    }

                    else

                    {

                        //获得当前的单元格

                        int newRowHandle = info.RowHandle;

                        if (CurrentRowHandle != newRowHandle)

                        {

                            CurrentRowHandle = newRowHandle;

                            //选定 区域 单元格

                            SelectRows( StartRowHandle, CurrentRowHandle);

                        }

                    }

                }

            }

        }

 

        //实现鼠标拖动选择多行 ,鼠标放开时

        private void gridView_MouseUp(object sender, MouseEventArgs e)

        {

            StartRowHandle = -1;

            CurrentRowHandle = -1;

            isMouseDown = false;

            isSetStartRow = false;

        }


作者:叉叉哥   转载请注明出处:http://blog.csdn.net/xiao__gui/article/details/7938507 

devexpress中gridview控件实现多选功能

前段时间做一个项目winform项目时,有个模块需要用到一个功能,在gridcontrol的表头添加一个checkedit,用户点击checkedit时全选或者取消全选数据。 在网上搜了很多文章,大...
  • zfy657721923
  • zfy657721923
  • 2015年02月04日 16:14
  • 1905

gridview如何实现多选的功能。

就是在每一个选择的item设置背景色。设置活动和非活动的背景色。然后通过在一个Mapt里面放着选中的每个的pos和获得的状态,最后通过遍历list获取状态是activited的那些。根据id得到lis...
  • liu13722785488
  • liu13722785488
  • 2015年05月14日 14:33
  • 2250

gridview多选单选的实现

这篇博客呢主要是写gridview的多选以及单选的功能,并且获取选中的值。 下面是我要实现的功能。这个布局里面有两个gridview。红色的球可以进行多选,蓝色的球只能是单选。item的布局里面放了三...
  • u010352858
  • u010352858
  • 2016年07月20日 23:09
  • 1534

Android中GridView实现长按多选功能

前言:GridView可用于展示多行多列的统一格式数据,但本身没有多选操作。现通过一系列代码实现GridView的长按多选操作,可以先看一个示例图。 以下是实现该功能的主要代码: MainAc...
  • u010429311
  • u010429311
  • 2016年02月24日 22:56
  • 3974

用RecyclerView轻松实现gridview中itemview拖拽效果

以前一直认为支付宝中的gridview拖拽效果很牛逼,局限于当时不会使用RecyclerView,眼光一直在GridView上打转,各种自定义,可是效果都不理想,前几天开始接触RecyclerView...
  • jiangjie4558
  • jiangjie4558
  • 2016年04月08日 13:51
  • 983

GridView实现多选,全选,反选等功能

先看看效果 我这里用到了数据库来储存选择的数据,数据库的简单实用我在前面的博客写过了,这里就不多说了,直接贴代码数据库操作类的代码package com.duanlian.gridviewmulti...
  • dl10210950
  • dl10210950
  • 2017年02月03日 16:16
  • 1915

android 实现GridView多选效果

在使用 GridView的时候,有时需要多选上面显示的类容,比如批量删除上面显示的图片,批量上传图片等。这个时候我们可以使用层叠图来实现,效果如下,点击图片后,上面会显示出一个打钩的图片,如图:再点击...
  • hhhccckkk
  • hhhccckkk
  • 2013年05月27日 09:17
  • 17157

GridControl 选择列、复选框全选(上)

说明:     GirdControl 中添加一列,这一列不是写在数据库中的,而是代码中添加的。 图示:   底层类代码: #region GridControl 全选 /// ...
  • u013816709
  • u013816709
  • 2015年07月01日 17:20
  • 7085

Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换

在Android开发中,我们常常用到ListView和GridView,而有的时候系统的ListView,GridView并不能满足我们的需求,所以我们需要自己定义一个ListView或者GridVi...
  • xiaanming
  • xiaanming
  • 2014年01月06日 08:57
  • 87409

Android 可拖拽的GridView效果实现, 长按可拖拽删除数据源

感谢这个作者的博客:Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换 作为新手,在这个的基础上,简单修改,完成自己想要的功能:长按,移到垃圾桶,删除数据。 ...
  • leafact
  • leafact
  • 2015年10月16日 15:00
  • 2329
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:devExpress之GridView小技巧(一):实现拖拽多选
举报原因:
原因补充:

(最多只允许输入30个字)