C# DataGridView如何实现拖拽功能?

chenchenyangll 2010-08-05 08:40:56
我想要的是一个简单的拖拽功能

比如单元格0,3 拖拽到 单元格3,3 交换两个格子中的内容
最好在拖拽的过程中能将单元格的内容随着鼠标移动- -

不知道该怎样实现? 谢谢~
...全文
1051 37 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
panli120 2011-04-06
  • 打赏
  • 举报
回复
樓主認定TextBox了 把TextBox替換成單行的dataGridView 效果不是更好嗎?
dodducs 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 chenchenyangll 的回复:]
引用 20 楼 qiuxin425 的回复:

引用 15 楼 chenchenyangll 的回复:
不行啊 显示不出来

现在有什么问题?


TextBox显示不出来 拖拽已经可以了
[/Quote]


给你代码你不按着做 你不想加DataGridView 把 DataGridView 换成 TextBox不就完了

服了
qiuxin425 2010-08-05
  • 打赏
  • 举报
回复
TextBox1.BringToFront();

加上这两句
qiuxin425 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 chenchenyangll 的回复:]
引用 20 楼 qiuxin425 的回复:

引用 15 楼 chenchenyangll 的回复:
不行啊 显示不出来

现在有什么问题?


TextBox显示不出来 拖拽已经可以了
[/Quote]

Rectangle r = this.dgv1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
r = this.dgv1.RectangleToScreen(r);
this.TextBox1.Location = this.tabPage4.RectangleToClient(r).Location;
this.TextBox1.Size = r.Size;
this.TextBox1.Visible = true;
chenchenyangll 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 qiuxin425 的回复:]

引用 15 楼 chenchenyangll 的回复:
不行啊 显示不出来

现在有什么问题?
[/Quote]

TextBox显示不出来 拖拽已经可以了
qiuxin425 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 chenchenyangll 的回复:]
关于第三步 怎样在知道坐标的情况下知道下标呢?
[/Quote]
int ida = dgv1.CurrentCell.RowIndex;
int idb = dgv1.CurrentCell.ColumnIndex;
dodducs 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 qiuxin425 的回复:]
引用 15 楼 chenchenyangll 的回复:
不行啊 显示不出来

现在有什么问题?
[/Quote]

他想就一个DataGridView 实现拖拽效果
qiuxin425 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 chenchenyangll 的回复:]
不行啊 显示不出来
[/Quote]
现在有什么问题?
dodducs 2010-08-05
  • 打赏
  • 举报
回复
如果你真的想 不加空间就实现字符跟着鼠标走,,在.net 2.0里
可能我知道的太少了吧,,我是没办法实现
dodducs 2010-08-05
  • 打赏
  • 举报
回复
你觉得可能么?
如果你不需要拖拽效果 当然一个就可以,,如果你要达到这种效果,,你肯定要借助控件
当然你可以选择 DataGridView 也可以选 Lable 看你想怎么用了 反正做法都一样

你如果不加控件 还想实现拖拽效果
我目前能想到的就是 你在用 .netFrameWork 3.0 用 WPF Canvas类自己去画一个出来!
你不想加控件在 .net 2.0里 实现字符跟着鼠标走?
chenchenyangll 2010-08-05
  • 打赏
  • 举报
回复
我不需要新增一个DataGridView啊
我只有一个DataGridView 在表里拖拽
dodducs 2010-08-05
  • 打赏
  • 举报
回复
你是不是没有增加一个新的 DataGidView?

你新建一个项目DEMO 把我的代码扔里边跑一下 了解一下程序思路
不可能跑不出来
chenchenyangll 2010-08-05
  • 打赏
  • 举报
回复
不行啊 显示不出来
dodducs 2010-08-05
  • 打赏
  • 举报
回复
你要的实现画面呈现拖拽效果 在
private void dataGridView1_CellMouseDown_1(object sender, DataGridViewCellMouseEventArgs e)

这个方法里就是代码
dodducs 2010-08-05
  • 打赏
  • 举报
回复
http://blog.csdn.net/dodducs/archive/2010/07/22/5755235.aspx


鄙人曾写过一个关于整行数据进行替换的小DEMO 但是没有加过边界安全设置等
你只要加上边界 把里面整行数据替换成只替换某一列就可以了
chenchenyangll 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qiuxin425 的回复:]

1. 在DataGridView控件的CellEnter事件中当点击某个单元格时,把TextBox置顶只读,取得DataGridView的值给TextBox。
Rectangle r = this.dgv1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
r =……
[/Quote]

谢谢,基本的拖拽已经做好了 现在就是实现那种拖拽效果了。。
不知道为什么显示不出 如果显示文字内容比较复杂的话 显示一个框表示这是拖拽操作也行- -
caiqin00 2010-08-05
  • 打赏
  • 举报
回复
用第三方控件DevExpress
chenchenyangll 2010-08-05
  • 打赏
  • 举报
回复
关于第三步 怎样在知道坐标的情况下知道下标呢?
chenchenyangll 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qiuxin425 的回复:]

1. 在DataGridView控件的CellEnter事件中当点击某个单元格时,把TextBox置顶只读,取得DataGridView的值给TextBox。
Rectangle r = this.dgv1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
r =……
[/Quote]

好 我去试试 有结果了再来~
加载更多回复(17)

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧