datagridview 上移 下移一行交换数据
交换数据不闪烁 ,复制数据 删除选中的行插入数据会有明显的闪烁
int rowIndex = dgv1.SelectedRows[0].Index; /*得到当前选中行的索引*/
rowIndex = 0; /*表示当前行是第1行*/
rowIndex = dgv1.Rows.Count - 1; /*当前行是最后一行*/
rowIndex =rowIndex - 1; /*当前行是上一行*/
rowIndex =rowIndex + 1; /*当前行是下一行*/
List<object> list = new List<object>(); /*使用object List对象因为 列的数据是不确定的*/
/*将选中行的所有单元格添加到List对象中 单元格的总数就是列的总数*/
for (int i = 0; i < dgv1.Columns.Count; i++)
list.Add(dgv1.SelectedRows[0].Cells[i].Value);
dgv1.Rows[rowIndex].Cells[i].Value /*这是选中的行*/
dgv1.Rows[rowIndex - 1].Cells[i].Value; /*......上一行*/
list[i] /*这里放的之前选中的行数据*/
dgv1.Rows[rowIndex].Selected = false; /*设置或取消选中的行 true|false*/
#region datagridview 上移 下移交换数据 /// <summary> /// 选中的项目上移一个 /// </summary> /// <param name="dgv1"></param> public static void MoveItemUp_DataGridView(DataGridView dgv1) { int rowIndex = dgv1.SelectedRows[0].Index; /*得到当前选中行的索引*/ if (rowIndex == 0) { MessageBox.Show("已经是第一行了!"); return; } List<object> list = new List<object>(); for (int i = 0; i < dgv1.Columns.Count; i++) list.Add(dgv1.SelectedRows[0].Cells[i].Value); for (int i = 0; i < dgv1.Columns.Count; i++) { dgv1.Rows[rowIndex].Cells[i].Value = dgv1.Rows[rowIndex - 1].Cells[i].Value;/*选中的行*/ dgv1.Rows[rowIndex - 1].Cells[i].Value = list[i]; /*上一行*/ } dgv1.Rows[rowIndex - 1].Selected = true; dgv1.Rows[rowIndex].Selected = false; } /// <summary> /// 选中的项目下移一个 /// </summary> public static void MoveItemDown_DataGridView(DataGridView dgv1) { int rowIndex = dgv1.SelectedRows[0].Index; if (rowIndex == dgv1.Rows.Count - 1) { MessageBox.Show("已经是最后一行了!"); return; } List<object> list = new List<object>();/*把当前选中行的数据存入list数组中*/ for (int i = 0; i < dgv1.Columns.Count; i++) list.Add(dgv1.SelectedRows[0].Cells[i].Value); for (int i = 0; i < dgv1.Columns.Count; i++) { /*选中的行 下一行 */ dgv1.Rows[rowIndex].Cells[i].Value = dgv1.Rows[rowIndex + 1].Cells[i].Value; dgv1.Rows[rowIndex + 1].Cells[i].Value = list[i]; } dgv1.Rows[rowIndex + 1].Selected = true; dgv1.Rows[rowIndex].Selected = false; } /// <summary> /// 移到最顶部 /// </summary> public static void MoveItemTop_DataGridView(DataGridView dgv1) { int rowIndex = dgv1.SelectedRows[0].Index; if (rowIndex == 0) { MessageBox.Show("已经是第一行了!"); return; } List<object> list = new List<object>(); for (int i = 0; i < dgv1.Columns.Count; i++) list.Add(dgv1.SelectedRows[0].Cells[i].Value); /*选中的行和第一行交换*/ for (int i = 0; i < dgv1.Columns.Count; i++) { dgv1.Rows[rowIndex].Cells[i].Value = dgv1.Rows[0].Cells[i].Value; /*选中的行*/ dgv1.Rows[0].Cells[i].Value = list[i]; /*第一行*/ } dgv1.Rows[0].Selected = true; dgv1.Rows[rowIndex].Selected = false; } /// <summary> /// 移动到最底端 /// </summary> public static void MoveItemBottom_DataGridView(DataGridView dgv1) { int rowIndex = dgv1.SelectedRows[0].Index; if (rowIndex == dgv1.Rows.Count - 1) { MessageBox.Show("已经是最后一行了!"); return; } List<object> list = new List<object>(); for (int i = 0; i < dgv1.Columns.Count; i++) list.Add(dgv1.SelectedRows[0].Cells[i].Value); for (int i = 0; i < dgv1.Columns.Count; i++) { /*选中的行 最后一行 交换*/ dgv1.Rows[rowIndex].Cells[i].Value = dgv1.Rows[dgv1.Rows.Count - 1].Cells[i].Value; dgv1.Rows[dgv1.Rows.Count - 1].Cells[i].Value = list[i]; /*最后一行 = 选中的行*/ } dgv1.Rows[dgv1.Rows.Count - 1].Selected = true; dgv1.Rows[rowIndex].Selected = false; } #endregion
分类:
C# functions
, dataGridView
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2013-11-26 C# richTextBox封装的一个打印的类
2013-11-26 RichtextBox打印
2013-11-26 RichTextBox选中文本时往自己的其他的位置实现拖拽
2013-11-26 C# 保存和读取TreeView展开的状态
2013-11-26 RichtextBox去除闪烁光标