/*DataGridView 实现行[Row]的上下移动,我这里用到了SelectedRows[0],而没用CurrentRow是有原因的
   主要是这两段代码:
   dataGridView1.Rows[rowIndex - 1].Selected = true;
   dataGridView1.Rows[rowIndex].Selected = false;
   这两行代码大家因该都能看懂,移上去的哪行选中状态,移下去的的取消选中状态.
   如果我用dataGridView1.CurrentRow.Cell[0].Value 他取得的值仍然是rowIndex索引行的值
  
    要使用SelectedRows[0] ,就必须设置这个属性:dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

实现原理:就是上下两行,把单元格中的值进行交换...呵呵表面上看去是向上,下移动了

不知道大家还有什么好的选中方法没...请多多指教

*/

private void Form3_Load(object sender, EventArgs e)
    {
      //........得到DataTable的代码省略....
      dataGridView1.DataSource = dt;
    }

private void button1_Click(object sender, EventArgs e)  //向上移动
    {
      int rowIndex = dataGridView1.SelectedRows[0].Index;  //得到当前选中行的索引

if(rowIndex == 0)
      {
        MessageBox.Show("已经是第一行了!");
        return;
      }

List<string> list = new List<string>();
      for (int i = 0; i < dataGridView1.Columns.Count; i++)
      {
        list.Add(dataGridView1.SelectedRows[0].Cells[i].Value.ToString());   //把当前选中行的数据存入list数组中
      }

for (int j = 0; j < dataGridView1.Columns.Count; j++)
      {
          dataGridView1.Rows[rowIndex].Cells[j].Value = dataGridView1.Rows[rowIndex - 1].Cells[j].Value;
          dataGridView1.Rows[rowIndex - 1].Cells[j].Value = list[j].ToString();
      }
      dataGridView1.Rows[rowIndex - 1].Selected = true;
      dataGridView1.Rows[rowIndex].Selected = false;
    }

private void button2_Click(object sender, EventArgs e)  //向下移动
    {
      int rowIndex = dataGridView1.SelectedRows[0].Index;  //得到当前选中行的索引

if (rowIndex == dataGridView1.Rows.Count -1)
      {
        MessageBox.Show("已经是最后一行了!");
        return;
      }

List<string> list = new List<string>();
      for (int i = 0; i < dataGridView1.Columns.Count; i++)
      {
        list.Add(dataGridView1.SelectedRows[0].Cells[i].Value.ToString());   //把当前选中行的数据存入list数组中
      }

for (int j = 0; j < dataGridView1.Columns.Count; j++)
      {
        dataGridView1.Rows[rowIndex].Cells[j].Value = dataGridView1.Rows[rowIndex + 1].Cells[j].Value;
        dataGridView1.Rows[rowIndex + 1].Cells[j].Value = list[j].ToString();
      }
      dataGridView1.Rows[rowIndex + 1].Selected = true;
      dataGridView1.Rows[rowIndex].Selected = false;
    }

C# dataGridView上下移动选中行相关推荐

  1. Datagridview代码设置选中行后,没有触发SelectionChanged事件

    不知道大家有没有遇到过这个问题,在winform开发软件的过程中,使用Datagridview代码设置选中行后,没有触发SelectionChanged事件,但是通过界面点击单元格或者选中行却是可以触 ...

  2. C# DataGridView控件选中行获取其值

    DataGridView的几个基本操作: 1.获得某个(指定的)单元格的值: dataGridView1.Row[i].Cells[j].Value; 2.获得选中的总行数: dataGridView ...

  3. C#中DataGridView移除选中行

    在项目开发中总会遇到DataGridview中移除多个选中行需求,而往往会遇到少删除一行问题,因为每次移除一行DataGridview数据DataGridview下标会立即改变,从而导致有些选中行未移 ...

  4. C# DataGridView如何获取选中行的某个数据

    DataGridView的几个基本操作: 1.获得某个(指定的)单元格的值: dataGridView1.Row[i].Cells[j].Value; 2.获得选中的总行数: dataGridView ...

  5. datagridview后台获取选中行的值的几种方式

    1.双击datagridview中的一行,后台获取改行的一个或多个列 private void dgvImport_DoubleClick(object sender, EventArgs e){st ...

  6. datagridview取消默认选中_Winform DataGridView 取消默认选中行

    困境 网上有很多解决方法,可是很多读者照做并不生效.追究其原因,问题出现在许多博主没有搞清楚DataGridView绑定与当前触发事件的关系. 复现 private void Frm_Load(obj ...

  7. datagridview 获取选中行的索引

    C# CODE for (int i = 0; i < this.dataGridView1.SelectedRows.Count; i++)//遍历所有选中的行 { this.dataGrid ...

  8. dataGridView选中行的语法

    for (int i = 0; i < this.dataGridView1.SelectedRows.Count; i++)//遍历所有选中的行 {this.dataGridView1.Sel ...

  9. DataGridView中获取与设置当前选中行以及SelectedRows和CurrentRow注意区分

    场景 DataGridView怎样实现添加.删除.上移.下移一行: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10281414 ...

最新文章

  1. 聊天宝彻底凉了,遭罗永浩抛弃,团队就地解散
  2. MongoDB学习笔记(一:常见问题汇总)
  3. QoS是否提供更多带宽?-Vecloud
  4. php 函数中静态变量的问题
  5. linux中iptables对防火墙的操作
  6. 今天用Map集合写了一个字符串字符统计的程序,看集合看的头痛,就看了一下GUI,于是就随便记点。
  7. mysql dump锁表_mysqldump 锁表和解锁语句
  8. linux 卸载lv,Linux系统LVM(逻辑卷管理)的删除
  9. 卷积神经网络参数说明
  10. python列表常用方法_python 列表常用方法
  11. java自带的tree,最强最全的Tree命令详解
  12. 目标检测算法——YOLOv3
  13. python学习 - 52周存钱挑战
  14. B、KB、MB、GB、T单位换算
  15. ae合成设置快捷键_AE脚本使用快捷键控制关键帧操作 Keyboard v1.2.2【资源分享1449】...
  16. 《经济机器是怎样运行的》笔记(二)
  17. php微信公众平台关注后欢迎语的设置,关注公众号的欢迎语怎么设置?公众号欢迎语怎么加链接?...
  18. GeckoView:Mozilla面向移动浏览器打造的渲染引擎
  19. 嗨格式Heic图片转换器v1.0.13.1436官方版
  20. 一图看懂| 人工智能知识体系大全

热门文章

  1. 学Python人工智能有发展前景吗?人工智能就业方向有哪些?
  2. SprinBoot集成disConf的过程梳理
  3. 有哪些高性价比的LoRa模块?
  4. HTML+CSS网页设计期末课程大作——运动系列NBA篮球主题(7页) 大学生运网页作品 篮球设计作业模板
  5. 毕业论文中的“自动生成目录”设置(经验四)
  6. Unable to preventDefault inside passive event listener due to target being treated as passive 怎么办?
  7. Kubernetes原生CI/CD构建框架Tekton详解
  8. Datawhale NLP入门:Task5 基于深度学习的文本分类2
  9. 基于python的情感分析案例-python自然语言处理情感分析案例
  10. 个人对于区块链技术的理解