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 

相关文章推荐

jquery简单制作悬浮导航 滚动到哪儿 定位到哪儿

$(document).ready(function() { scr_win(); scr_li(); $(".dtnav li").click(function() { $(window)...

devexpress中gridview控件实现多选功能

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

devExpress之GridView小技巧(四):右键菜单和可用设置

右键菜单肯定是GridView中经常要使用的一个功能。本文主要描述两个方面:如何在GridView中添加右键菜单,以及如何设置菜单是否可用(enable)。 一、添加右键菜单 1.在V...

unity批量拖拽到属性排序问题小技巧

这个方法可以解决批量拖序列帧或者场景物体顺序乱的问题,为懒人服务 当然你也可以直接加载的时候解决这样问题。 unity可以批量把场景或者项目上的物体拖动到一个public属性的数组上 当然这个...

可多选进行拖拽删除的CTreeCtrl.rar

  • 2012年07月30日 20:10
  • 483KB
  • 下载

[ListBox]鼠标拖拽多选

  • 2013年12月13日 14:14
  • 21KB
  • 下载

jquery鼠标左键拖拽的多选

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> http://www.w3.org/1999/xhtml"> test ...

GridView实现漂亮的多选效果

  • 2013年03月15日 15:12
  • 763KB
  • 下载

解决grid拖拽功能后,复选框多选后取消不掉的问题

Extjs 中设置enableDragDrop:true,即可实现grdi的grid可拖拽功能,但是与此同时带来一个bug,复选框多选后,点击其中的一个复选框取消不掉已选中的这行 只能通过全选然后取消...

GridView实现多选

  • 2015年11月17日 15:40
  • 1.36MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:devExpress之GridView小技巧(一):实现拖拽多选
举报原因:
原因补充:

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