GridView可以通过Shift键或Ctrl键以及Ctrl+A快捷键实现多选,但是默认不支持拖拽多选,好像也没有设置的方法。这样虽然没什么问题,但是肯定会给用户带来不便。
首先要设置OptionsSelection中的MultiSelect为true,也就是允许多选,否则下面的一切都是浮云。
本文通过以下代码实现拖拉多选的功能,主要是编写MouseDown、MouseMove、MouseUp三个函数。
这里需要注意一下GridHitInfo,这个类可以根据x、y坐标获取该点在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下拉框repositoryItemComboBox的使用...
DevExpress的GridView动态绑定数据集,多线程动态修改UI自动刷新,输出中打印运行状态等
解决DevExpress GridControl GridView 在新增数据行时数据为空的问题,新窗口数据返回时自动新增行并刷新。
只能导出导出devexpress插件的GridControl控件中GridView表格中的数据,表格中有什么数据导出什么数据,列顺序也不变。 文件说明: 1.ExportTableExcel.cs:实现导出逻辑的类 2.ExportExcelStyle.cs:导出的...
针对DevExpress GridControl GridView 新增行AddNewRow() 很多人加了代码也无法实现添加行或者添加行后InitNewRow这个事件没有触发, 其中主要原因见附件实例代码!
C# winform DevExpress 使用GridControl组件实现拖动排序功能,此文档中是完整Demo示例,原文参考 https://blog.csdn.net/xiaoid/article/details/95954708#commentBox 文献,加以修改并进行关键代码注释
里面涵盖了开发过程对GridView属性设置的图文教程,希望对大家有帮助!
devexpress13 2 aspxgridview
aspxgridview的通常适用方法,全选、获取选中行ID,列命令等,本例中用到数据库属于自用所以例子中的网站不能运行,但是使用方法很齐全,一看便可明白,用户可自行配置数据库测试,也可以将方法直接拿去用,希望能对...
网上参照过别人的SearchLookUpEdit 多选,但是代码不全,零零散散,经过2个星期代码编写,测试,整理出了SearchLookUpEdit 多选功能实现的代码. 过程不易.代码量虽然只有200多行,但是经过几个版本的优化,性能完美. 望参与...
基于动软代码生成器,自己做的2个模板,选择数据库的一个表(视图、存储过程)后,可以自动生成devexpress的gridview数据列,也可以生成单行编辑时的界面,大大节省时间并避免错误。 需要:动软代码生成器、...
C# Winform+devexpress 实现分页功能,上一页,下一页,最前页,最后一页,总记录数,总页数功能,带功能描述文件:WinformPager_Help.CHM
关于DevExpress的GridView的过滤条件如何转成相应的语句,dev官网提供了相应的处理方法,方便开发人员调用,目前支持数据库语句有MS Sql 、Oracle 、Access,资源用到的Dev版本是18.1,为了保证能运行,相关程序集...
DevExpress设置单元格不可编辑,选单元格则选中一行,目的是只展示数据,不提供修改功能: DevexpressGridControl禁止点击单元格修改 设置GridView.OptionsBehavior的Editable选项设为False。在这种情况下,整个Grid...
GridView列数字、货币和日期的显示格式
Dev GridView 拖拽行进行排序
本文实例展示了DevExpress实现GridView当无数据行时提示消息的方法,具体步骤如下: 主要功能代码部分如下: /// /// 设置当没有数据行的提示信息『CustomDrawEmptyForeground』 /// /// <param name=gridView>...
DevExpress_ASPxGridView_使用方法汇总
DevExpress_ASPxGridView_使用方法汇总
主要为大家详细介绍了DevExpress GridView自动滚动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下