DataGridView拖动换行
1. 功能
鼠标点击行首拖动换行
多行选择删除
2. 主要代码
{
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拖动换行相关推荐
- [Xcode 实际操作]五、使用表格-(11)调整UITableView的单元格顺序
目录:[Swift]Xcode实际操作 本文将演示如何调整单元格在表格中的位置. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 ...
- Datagridview 在基于文本的单元格中启用换行,自动调整行高列宽
将 DataGridViewCellStyle的 WrapMode 属性设置为 DataGridViewTriState 枚举值之一.下面的代码示例使用 System.Windows.Forms.Da ...
- DatagridView内容自动换行和换行符换行
内容自动换行: 在 DataGridView 新增 Row 时,設定 DataGridView 的 DefaultCellStyle 屬性WrapMode=true: 换行符换行: 在 DataGri ...
- Winform中DataGridView中添加数据并且拖动整行
dgv_senceConfig_sence是DataGridView控件的名称: 这是整段代码的逻辑比较多,需要用户自己去选择,这个可以实现添加数据和拖动整行(肯定实现了) using Control ...
- dataGridView使用指南系列一、回车换行或换列完美解决方案
在使用datagridview控件时,默认按回车是跳转到下一行的当前列的,要想让按回车跳转到同一行的下一列该怎么做呢? 百度搜索了一下,大都是使用该控件的key_down事件和CellEndEdit进 ...
- WinForm中DataGridView的TextBoxColumm换行
一.内容超过显示宽度自动换行: 在需要自动换行的列中设置 二.换行符换行: 一开始在需要换行的文本添加"\r\n"并不能直接换行,DGV直接把\r\n显示出来了,后换成 Syste ...
- DataGridView使用方法汇总
DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它能够代替先前版本号中DataGrid控件,它易于使用并高度可定制,支持许多我们的用户须要的 ...
- DataGridView
新数据网格简介 发布日期: 5/24/2005 | 更新日期: 5/24/2005 Matthew MacDonald 新的 DataGridView 是 .NET 2.0 中的一个新控件,是针对 . ...
- C#dataGridView 知识(示例代码)以及相关的经验技巧
一.单元格内容的操作 // 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index Conso ...
- 深入了解DataGridView控件
DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需 ...
最新文章
- grafana美人鱼_编码美人鱼–我如何从海洋生物学家转到前端开发人员
- 生产订单中的下层物料信息
- 到你是你玩互联网还是互联网玩了你
- Duilib嵌入CEF出现窗口显示不正常
- mysql监控sql_关于对mysql语句进行监控的方法详解
- Linux 搜索 查找find命令 详解
- 信息安全-工控安全需求分析与安全保护工程
- 声鉴卡HTML5网页源码
- matlab的提示符,在 MATLAB 命令窗口中的“ ”标志为 MATLAB 的 的提示符,“│”标志为 提示符。...
- 苹果笔记本风扇测试软件,实用的mac电脑风扇控制软件 Macs Fan Control Pro
- 【开源教程8】疯壳·开源编队无人机-GPIO(LED 航情灯、信号灯控制)
- 2小时开发《点球射门游戏》,动画演示思路(上),代码已开源
- 一键还原奥运版_《马力欧索尼克东京奥运会》评测6.9分:体感玩法也带不动的枯燥...
- i9-13900fk搭配z790-p主板出现死机问题解决方法
- 中兴通讯某产品大规模敏捷转型实践
- 项目管理-项目开发相关
- unity-摄像机跟随
- 【已解决】谷歌浏览器提示:无法访问此网站网址为 http://localhost:6667/XXX/XXX 的网页可能暂时无法连接,或者它已永久性地移动到了新网址
- hj212协议测试软件,环保用电在线监测设备 HJ212协议
- L11.linux命令每日一练 -- 第二章 文件和目录操作命令 -- rename和basename命令
热门文章
- 修改fstab导致UBUNTU无法启动的解决办法
- CPU密集型和I/O密集型
- jsp点击按钮弹出输入框_【问答3】需要点击虚拟键盘上发送(搜索)按钮的写法...
- Qt C++调用Python,解决线程问题,以及GIL锁的处理
- C++ byte数组/char数组 转 int16 int32
- git 各种撤销操作办法
- crontab 日志_linux计划任务-单次任务(at)与循环任务(crontab)
- string类的函数
- 清楚理解const_cast类型转换
- idea 正则表达式替换