【WinForm+DevExpress】GridView 在两个表格之间拖拽行

2024-05-31 22:08

本文主要是介绍【WinForm+DevExpress】GridView 在两个表格之间拖拽行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果图

可以将左边的行数据拖拽到右边,或者是将右边的行数据拖拽到左边

实现:

第一步:

新加两个GridControl,为他们设置数据源,并且将两个GridControl的AllowDrop属性设置为True

 private void DragDemo_Load(object sender, EventArgs e){FillData();}
private void FillData(){//左边的网格默认查出tb_order表中的所有数据string gridView1sql1 = "select orderName from tb_order";//右边的网格默认不显示数据string gridView1sql2 = "select orderName from tb_order where 1=2";gridControl1.DataSource = GetDataSource(gridView1sql1);gridControl2.DataSource = GetDataSource(gridView1sql2);}}private DataTable GetDataSource(string sql){SqlDataAdapter da = new SqlDataAdapter(sql, DBConst.DBConnectionString);DataTable dt = new System.Data.DataTable();da.Fill(dt);return dt;}

第二步:添加四个方法:

//鼠标拖拽过程事件private void gridControl_DragOver(object sender, DragEventArgs e){e.Effect = DragDropEffects.Move;GridControl grid = sender as GridControl;if (grid == null) return;GridView view = grid.FocusedView as GridView;//GridView如果有分组,则展开所有分组数据if (view.GroupCount != 0)view.ExpandAllGroups();}//鼠标按下事件private void gridView_MouseDown(object sender, MouseEventArgs e){GridView view = sender as GridView;downHitInfo = null;GridHitInfo hitInfo = view.CalcHitInfo(new Point(e.X, e.Y));//鼠标左键按下去时在GridView中的坐标if (Control.ModifierKeys != Keys.None) return;if (e.Button == MouseButtons.Left && hitInfo.RowHandle >= 0)downHitInfo = hitInfo;}//鼠标移动事件private void gridView_MouseMove(object sender, MouseEventArgs e){GridView view = sender as GridView;if (e.Button == MouseButtons.Left && downHitInfo != null)//不是左键则无效且鼠标左键按下去时需要在gridview区域中{Size dragSize = SystemInformation.DragSize;Rectangle dragRect = new Rectangle(new Point(downHitInfo.HitPoint.X - dragSize.Width / 2,downHitInfo.HitPoint.Y - dragSize.Height / 2), dragSize);if (!dragRect.Contains(new Point(e.X, e.Y))){object row = view.GetRow(downHitInfo.RowHandle);if (row == null) return;view.GridControl.DoDragDrop(row, DragDropEffects.Move);downHitInfo = null;DevExpress.Utils.DXMouseEventArgs.GetMouseArgs(e).Handled = true;}}}//拖拽完成后事件private void gridControl_DragDrop(object sender, DragEventArgs e){GridControl grid = sender as GridControl;DataTable table = grid.DataSource as DataTable;//获取选中行的数据DataRow row = ((DataRowView)e.Data.GetData(typeof(DataRowView))).Row;if (row != null && table != null && row.Table != table){table.ImportRow(row);row.Delete();}}

第三步:为两个GridControl绑定这4个方法

 this.gridControl1.DragDrop += new System.Windows.Forms.DragEventHandler(this.gridControl_DragDrop);this.gridControl1.DragOver += new System.Windows.Forms.DragEventHandler(this.gridControl_DragOver);this.gridView1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.gridView_MouseDown);this.gridView1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.gridView_MouseMove);
  this.gridView2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.gridView_MouseDown);this.gridView2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.gridView_MouseMove);this.gridControl2.DragDrop += new System.Windows.Forms.DragEventHandler(this.gridControl_DragDrop);this.gridControl2.DragOver += new System.Windows.Forms.DragEventHandler(this.gridControl_DragOver);

注意:

如果只需要实现左边的表格向右边的表格拖拽功能,只需要给gridView1添加MouseDown和MouseMove事件,给gridControl2添加DragDrop和DragOver事件

GitHub地址:

https://github.com/xiaoyonglu/DevExpressDemos

这篇关于【WinForm+DevExpress】GridView 在两个表格之间拖拽行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019170

相关文章

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim