首页 > 慧问 > 频道

Wpf gridcontrol 行的拖拽

发表于2019-05-10 回复:0 查看:2285  |  
我在WPF中使用gridcontrl控件,dev的版本是13.1; 我想在gridcontrol中实现拖拽,我在网上查了一些资料,但在程序里没有DragDrop的事件,相关资料如下: <pre class='brush:csharp'> private GridHitInfo downHitInfo; private void gridControl1_DragDrop(object sender, DragEventArgs e) { //获取鼠标在屏幕上的位置。 Point gridviewPoint = this.PointToScreen (this.gridControl1.Location ); //获取 gridview 中对应的的位置(屏幕位置减去 gridView 开始位置) upHitInfo = gridView1.CalcHitInfo(new Point(e.X - gridviewPoint.X, e.Y - gridviewPoint.Y)); if (upHitInfo == null || upHitInfo.RowHandle < 0) return; //获取释放的位置列索引 int endRow =gridView1.GetDataSourceRowIndex ( gridView1.GetDataSourceRowIndex(upHitInfo.RowHandle)); List<XESHI> row = e.Data.GetData(typeof(List<XESHI>)) as List<XESHI>; //获取要移动的数据 if (row != null && row.Count > 0) //没有移动的数据跳过 { int a; //获取移动列集合的第一列在数据源的索引 int startRow = asd.IndexOf(row[0]); XESHI xs = asd[endRow]; if (!row.Contains(xs)) //如果多选的话,确保不能拖拽到这几个里 { gridView1.ClearSelection(); //排序,先删除后后添加, for (int i = 0; i < row.Count; i++) asd.Remove(row[i]); //若果往上托,则加在鼠标到达行的上面 //如果往下拖,则加在鼠标到达行的下面 if (startRow > endRow) a = asd.IndexOf(xs); else a = asd.IndexOf(xs) + 1; for (int i = 0; i < row.Count; i++) { asd.Insert(a + i, row[i]); gridView1.SelectRow(a + i); } gridView1.FocusedRowHandle = a; } } </pre> 这个dev的版本有关吗? 那如果时dev13.1,怎么实现gridcontrol的拖拽呢
0个回答

打破零回复...

回复

登录 慧都网发表评论

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP