关于datagridview拖放行排序
来源:互联网 发布:mac invalid argument 编辑:程序博客网 时间:2024/03/29 09:11
今天鼓弄了一天 试了好几种方法 也出现好几种不同的效果 不过最后还是觉得这种更符合拖拽 呵呵
我也是网上搜罗了好久 自己又鼓弄了好久
所以贴出来 大家分享分享 呵呵 fighting
比较关键的三点
1) CellMouseDown选中要拖动的行 我这里是选中第一列可以实现拖放
因为其他列单元格的内容时可以修改的 感觉不太适合用来拖放
private void dgv_Para_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex == 0 && e.RowIndex >= 0)
{
indexofsource = e.RowIndex;//全局变量 记录拖放的初始位置
}
}
2 )CellMouseUp 如其名 Up当鼠标停止拖动时 触发事件
private void dgv_Para_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex == 0 && e.RowIndex >= 0)
{
if (e.Clicks < 2)// 单击执行换行
{
indexoftarget = e.RowIndex;//目标位置
dgv_Para.DoDragDrop(dgv_Para.Rows[indexoftarget], DragDropEffects.Move);
if (indexoftarget > -1 && indexofsource > -1)//点击别的地方以后给indexofsource定个值-1 免得总被记录 影响其它地方
{
DataGridViewRow r = (DataGridViewRow)dgv_Para.Rows[indexofsource]; // (DataGridViewRow)e.Data.GetData(typeof(DataGridViewRow));
DataTable tmpdt = (DataTable)dgv_Para.DataSource;
DataRow r1 = tmpdt.NewRow();
for (int i = 0; i < tmpdt.Columns.Count; i++)
{
r1[i] = r.Cells[i].Value;
}
tmpdt.Rows.RemoveAt(r.Index);
tmpdt.Rows.InsertAt(r1, indexoftarget);
dgv_Para.CurrentCell = dgv_Para.Rows[indexoftarget].Cells[0];
indexofsource = indexoftarget;
}
}
}
if (e.ColumnIndex != 0)
{
indexofsource = -1;
}
}
3)DragEnter 拖动
private void dgv_Para_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
- 关于datagridview拖放行排序
- 实现DataGridView的整行拖放
- 拖放 API 实现拖放排序
- DataGridView的行自动排序
- 拖放数据操作:从DataGridView拖放数据到ListBox中。
- DataGridView排序..
- DatagridView排序
- CheckedListBox 拖放、排序实例
- Ext表格拖放排序
- jquery拖放排序插件
- 使DataGridView支持数据拖放(DragDrop)
- 关于datagridview
- 关于DataGridView
- 关于flex自动拖放
- 关于 ole 拖放
- 关于datagridview排序后字体颜色丢失问题
- 让DataGridView的新增行不排序
- c# winform listview 拖放排序
- How to Backup Your System in linux
- 影响世界的十位算法大师
- jsp servlet中的过滤器Filter配置总结
- 40条技巧优化php代码(PHP100)
- winform随机验证码生成和验证
- 关于datagridview拖放行排序
- 杜拉拉作者致大学生:毕业了我们干什么
- 纸牌游戏
- JAVA生成【缩略图】方法
- 关于电脑的一些秘密
- 两个小时精通Android开发之按键映射篇
- JavaScript的window对象的open方法
- linux下的硬盘分区,格式化,挂载
- 自动记帐如何确定会计科目的借贷