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
  • 2210

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

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

DevExpress中GridControl中实现checkbox多行选中

DevExpress中GridControl中实现checkbox多行选中 先看一下效果吧! 11  12  13为我选中的行的主键号 实现以上效果进行批量修改 删除的做法 首先添加一个正常的gri...
  • l1158513573
  • l1158513573
  • 2015年06月15日 13:03
  • 6025

强大DevExpress,Winform LookUpEdit 实现多列查询 gridview弹出下拉选择

强大DevExpress,Winform LookUpEdit 实现多列查询 gridview弹出下拉选择  关键代码请参考http://www.devexpress.com/Support/Cent...
  • yizhiduxiu11
  • yizhiduxiu11
  • 2011年03月02日 11:51
  • 5092

gridview如何实现多选的功能。

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

DevExpress控件使用之SearchLookUpEdit (多选)

SearchLookUpEdit(二、多选) 效果图(可多选,弹出窗体添加控件)
  • u014682870
  • u014682870
  • 2017年11月28日 15:11
  • 630

android 实现GridView多选效果

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

DevExpress Gridcontrol 表格头复选框 全选全不选

新建窗体 拖一个Gridcontrol 添加两列 col1,col2 public partial class XtraForm2 : DevExpress.XtraEditors.XtraForm...
  • zhishiheng
  • zhishiheng
  • 2015年01月29日 20:45
  • 5313

DevExpress GridView 整理

 DevExpress GridView 那些事儿 1:去除 GridView 头上的 "Drag a column header here to group by that co...
  • flrnsska
  • flrnsska
  • 2016年06月06日 09:41
  • 2972

gridview多选单选的实现

这篇博客呢主要是写gridview的多选以及单选的功能,并且获取选中的值。 下面是我要实现的功能。这个布局里面有两个gridview。红色的球可以进行多选,蓝色的球只能是单选。item的布局里面放了三...
  • u010352858
  • u010352858
  • 2016年07月20日 23:09
  • 1672
收藏助手
不良信息举报
您举报文章:devExpress之GridView小技巧(一):实现拖拽多选
举报原因:
原因补充:

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