1. 功能

  鼠标点击行首拖动换行

  多行选择删除

2. 主要代码

  

View Code

        private void dgv_SelectionChanged(object sender, EventArgs e)
        {
            if (dgv.Rows.Count > 0 && selectionIdx > -1 && selectionIdx < dgv.Rows.Count - 1)// (dgv.SelectedRows.Count > 0))
            {

if (dgv.Rows.Count <= selectionIdx)
                    selectionIdx = dgv.Rows.Count - 1;
                dgv.Rows[selectionIdx].Selected = true;
                //dgv.CurrentCell = dgv.Rows[selectionIdx].Cells[0];
            }
        }

private void dgv_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex >= 0)
                selectionIdx = e.RowIndex;
        }

private void dgv_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
        {
            if ((e.Clicks < 2) && (e.Button == MouseButtons.Left))
            {
                if ((e.ColumnIndex == -1) && (e.RowIndex > -1))
                    dgv.DoDragDrop(dgv.Rows[e.RowIndex], DragDropEffects.Move);
            }
        }

private void dgv_DragDrop(object sender, DragEventArgs e)
        {
            int idx = GetRowFromPoint(e.X, e.Y);
            if (idx < 0) return;

if (e.Data.GetDataPresent(typeof(DataGridViewRow)))
            {
                DataGridViewRow row = (DataGridViewRow)e.Data.GetData(typeof(DataGridViewRow));
                DataRow ddr = ((DataRowView)row.DataBoundItem).Row;
                DataRow nr = ((DataTable)dgv.DataSource).NewRow();

for (int i = 0; i < row.Cells.Count; i++)
                {
                    nr[i] = row.Cells[i].Value;
                }
                selectionIdx = idx;
                ((DataTable)dgv.DataSource).Rows.InsertAt(nr, idx);
                ((DataTable)dgv.DataSource).Rows.Remove(ddr);
                dgv.ClearSelection();
            }
        }

private void dgv_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Move;
        }

private int GetRowFromPoint(int x, int y)
        {
            for (int i = 0; i < dgv.RowCount; i++)
            {
                Rectangle rec = dgv.GetRowDisplayRectangle(i, false);

if (dgv.RectangleToScreen(rec).Contains(x, y))
                    return i;
            }

return -1;
        }

  源码下载

转载于:https://www.cnblogs.com/hongyuniu/archive/2011/06/16/2082853.html

DataGridView拖动换行相关推荐

  1. [Xcode 实际操作]五、使用表格-(11)调整UITableView的单元格顺序

    目录:[Swift]Xcode实际操作 本文将演示如何调整单元格在表格中的位置. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 ...

  2. Datagridview 在基于文本的单元格中启用换行,自动调整行高列宽

    将 DataGridViewCellStyle的 WrapMode 属性设置为 DataGridViewTriState 枚举值之一.下面的代码示例使用 System.Windows.Forms.Da ...

  3. DatagridView内容自动换行和换行符换行

    内容自动换行: 在 DataGridView 新增 Row 时,設定 DataGridView 的 DefaultCellStyle 屬性WrapMode=true: 换行符换行: 在 DataGri ...

  4. Winform中DataGridView中添加数据并且拖动整行

    dgv_senceConfig_sence是DataGridView控件的名称: 这是整段代码的逻辑比较多,需要用户自己去选择,这个可以实现添加数据和拖动整行(肯定实现了) using Control ...

  5. dataGridView使用指南系列一、回车换行或换列完美解决方案

    在使用datagridview控件时,默认按回车是跳转到下一行的当前列的,要想让按回车跳转到同一行的下一列该怎么做呢? 百度搜索了一下,大都是使用该控件的key_down事件和CellEndEdit进 ...

  6. WinForm中DataGridView的TextBoxColumm换行

    一.内容超过显示宽度自动换行: 在需要自动换行的列中设置 二.换行符换行: 一开始在需要换行的文本添加"\r\n"并不能直接换行,DGV直接把\r\n显示出来了,后换成 Syste ...

  7. DataGridView使用方法汇总

    DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它能够代替先前版本号中DataGrid控件,它易于使用并高度可定制,支持许多我们的用户须要的 ...

  8. DataGridView

    新数据网格简介 发布日期: 5/24/2005 | 更新日期: 5/24/2005 Matthew MacDonald 新的 DataGridView 是 .NET 2.0 中的一个新控件,是针对 . ...

  9. C#dataGridView 知识(示例代码)以及相关的经验技巧

    一.单元格内容的操作 // 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index Conso ...

  10. 深入了解DataGridView控件

     DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需 ...

最新文章

  1. grafana美人鱼_编码美人鱼–我如何从海洋生物学家转到前端开发人员
  2. 生产订单中的下层物料信息
  3. 到你是你玩互联网还是互联网玩了你
  4. Duilib嵌入CEF出现窗口显示不正常
  5. mysql监控sql_关于对mysql语句进行监控的方法详解
  6. Linux 搜索 查找find命令 详解
  7. 信息安全-工控安全需求分析与安全保护工程
  8. 声鉴卡HTML5网页源码
  9. matlab的提示符,在 MATLAB 命令窗口中的“ ”标志为 MATLAB 的 的提示符,“│”标志为 提示符。...
  10. 苹果笔记本风扇测试软件,实用的mac电脑风扇控制软件 Macs Fan Control Pro
  11. 【开源教程8】疯壳·开源编队无人机-GPIO(LED 航情灯、信号灯控制)
  12. 2小时开发《点球射门游戏》,动画演示思路(上),代码已开源
  13. 一键还原奥运版_《马力欧索尼克东京奥运会》评测6.9分:体感玩法也带不动的枯燥...
  14. i9-13900fk搭配z790-p主板出现死机问题解决方法
  15. 中兴通讯某产品大规模敏捷转型实践
  16. 项目管理-项目开发相关
  17. unity-摄像机跟随
  18. 【已解决】谷歌浏览器提示:无法访问此网站网址为 http://localhost:6667/XXX/XXX 的网页可能暂时无法连接,或者它已永久性地移动到了新网址
  19. hj212协议测试软件,环保用电在线监测设备 HJ212协议
  20. L11.linux命令每日一练 -- 第二章 文件和目录操作命令 -- rename和basename命令

热门文章

  1. 修改fstab导致UBUNTU无法启动的解决办法
  2. CPU密集型和I/O密集型
  3. jsp点击按钮弹出输入框_【问答3】需要点击虚拟键盘上发送(搜索)按钮的写法...
  4. Qt C++调用Python,解决线程问题,以及GIL锁的处理
  5. C++ byte数组/char数组 转 int16 int32
  6. git 各种撤销操作办法
  7. crontab 日志_linux计划任务-单次任务(at)与循环任务(crontab)
  8. string类的函数
  9. 清楚理解const_cast类型转换
  10. idea 正则表达式替换