比如单元格0,3 拖拽到 单元格3,3 交换两个格子中的内容
最好在拖拽的过程中能将单元格的内容随着鼠标移动- -
不知道该怎样实现? 谢谢~
37 个解决方案
#1
只是交换内容好做。实现这种拖拽效果有点难
#2
交换内容的话该怎么写?
#3
学习围观
#4
帮顶 等高人.
#5
用一个TextBox控件,当你点击单元格时,TextBox覆盖它取得值并随着鼠标移动,移动的位置,把后面单元格的数值给前面那个,再把TextBox里面的内容替换就行了。
#6
LS给些代码之类的 或者说 要写哪个事件?
#7
1. 在DataGridView控件的CellEnter事件中当点击某个单元格时,把TextBox置顶只读,取得DataGridView的值给TextBox。
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;
2. 然后执行MouseMove事件,移动TextBox
3. 响应MouseUp事件,得到鼠标抬起位置(相对于DataGridView),将DataGridView的单元格数据取出来给前面那个,再把TextBox给这个单元格,隐藏TextBox控件。
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;
2. 然后执行MouseMove事件,移动TextBox
3. 响应MouseUp事件,得到鼠标抬起位置(相对于DataGridView),将DataGridView的单元格数据取出来给前面那个,再把TextBox给这个单元格,隐藏TextBox控件。
#8
好 我去试试 有结果了再来~
#9
关于第三步 怎样在知道坐标的情况下知道下标呢?
#11
用第三方控件DevExpress
#12
谢谢,基本的拖拽已经做好了 现在就是实现那种拖拽效果了。。
不知道为什么显示不出 如果显示文字内容比较复杂的话 显示一个框表示这是拖拽操作也行- -
#13
http://blog.csdn.net/dodducs/archive/2010/07/22/5755235.aspx
鄙人曾写过一个关于整行数据进行替换的小DEMO 但是没有加过边界安全设置等
你只要加上边界 把里面整行数据替换成只替换某一列就可以了
鄙人曾写过一个关于整行数据进行替换的小DEMO 但是没有加过边界安全设置等
你只要加上边界 把里面整行数据替换成只替换某一列就可以了
#14
你要的实现画面呈现拖拽效果 在
private void dataGridView1_CellMouseDown_1(object sender, DataGridViewCellMouseEventArgs e)
这个方法里就是代码
private void dataGridView1_CellMouseDown_1(object sender, DataGridViewCellMouseEventArgs e)
这个方法里就是代码
#15
不行啊 显示不出来
#16
你是不是没有增加一个新的 DataGidView?
你新建一个项目DEMO 把我的代码扔里边跑一下 了解一下程序思路
不可能跑不出来
你新建一个项目DEMO 把我的代码扔里边跑一下 了解一下程序思路
不可能跑不出来
#17
我不需要新增一个DataGridView啊
我只有一个DataGridView 在表里拖拽
我只有一个DataGridView 在表里拖拽
#18
你觉得可能么?
如果你不需要拖拽效果 当然一个就可以,,如果你要达到这种效果,,你肯定要借助控件
当然你可以选择 DataGridView 也可以选 Lable 看你想怎么用了 反正做法都一样
你如果不加控件 还想实现拖拽效果
我目前能想到的就是 你在用 .netFrameWork 3.0 用 WPF Canvas类自己去画一个出来!
你不想加控件在 .net 2.0里 实现字符跟着鼠标走?
如果你不需要拖拽效果 当然一个就可以,,如果你要达到这种效果,,你肯定要借助控件
当然你可以选择 DataGridView 也可以选 Lable 看你想怎么用了 反正做法都一样
你如果不加控件 还想实现拖拽效果
我目前能想到的就是 你在用 .netFrameWork 3.0 用 WPF Canvas类自己去画一个出来!
你不想加控件在 .net 2.0里 实现字符跟着鼠标走?
#19
如果你真的想 不加空间就实现字符跟着鼠标走,,在.net 2.0里
可能我知道的太少了吧,,我是没办法实现
可能我知道的太少了吧,,我是没办法实现
#20
现在有什么问题?
#21
他想就一个DataGridView 实现拖拽效果
#22
int ida = dgv1.CurrentCell.RowIndex;
int idb = dgv1.CurrentCell.ColumnIndex;
#23
TextBox显示不出来 拖拽已经可以了
#24
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;
#25
TextBox1.BringToFront();
加上这两句
加上这两句
#26
给你代码你不按着做 你不想加DataGridView 把 DataGridView 换成 TextBox不就完了
服了
#27
我本来就加的是TextBox 我就不明白为什么一定要DataGridView
还有 即便你是对的 我也没有必要一定照着你的做 收起你狂妄的口气 谢谢
#28
貌似还是不行
我的DataGridView是放在一个TabPage中的 会不会是因为TabPage把它遮住了?
#29
应该不会,你把TextBox也放在这个TabPage中,在初始化时把它隐藏。应该会显示的。
#30
现在已经出现那个TextBox了 但是位置不对 MouseMove事件里 TextBox的位置具体该怎么写啊?
#31
你的TextBox是只能在DataGridView控件上移动么?
就是这个控件DataGridView的MouseMove
我也去试试看
就是这个控件DataGridView的MouseMove
我也去试试看
#32
恩 就是单纯的坐标不正确 其他都可以了
#33
我用textBox1.Location = e.Location
感觉位置上有点偏差
感觉位置上有点偏差
#34
我搞出来了 要将TextBox的Parent设成DataGridView 这样就可以了
#35
hehe
#36
谢谢啦~ 结贴
#37
樓主認定TextBox了 把TextBox替換成單行的dataGridView 效果不是更好嗎?
#1
只是交换内容好做。实现这种拖拽效果有点难
#2
交换内容的话该怎么写?
#3
学习围观
#4
帮顶 等高人.
#5
用一个TextBox控件,当你点击单元格时,TextBox覆盖它取得值并随着鼠标移动,移动的位置,把后面单元格的数值给前面那个,再把TextBox里面的内容替换就行了。
#6
LS给些代码之类的 或者说 要写哪个事件?
#7
1. 在DataGridView控件的CellEnter事件中当点击某个单元格时,把TextBox置顶只读,取得DataGridView的值给TextBox。
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;
2. 然后执行MouseMove事件,移动TextBox
3. 响应MouseUp事件,得到鼠标抬起位置(相对于DataGridView),将DataGridView的单元格数据取出来给前面那个,再把TextBox给这个单元格,隐藏TextBox控件。
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;
2. 然后执行MouseMove事件,移动TextBox
3. 响应MouseUp事件,得到鼠标抬起位置(相对于DataGridView),将DataGridView的单元格数据取出来给前面那个,再把TextBox给这个单元格,隐藏TextBox控件。
#8
好 我去试试 有结果了再来~
#9
关于第三步 怎样在知道坐标的情况下知道下标呢?
#10
#11
用第三方控件DevExpress
#12
谢谢,基本的拖拽已经做好了 现在就是实现那种拖拽效果了。。
不知道为什么显示不出 如果显示文字内容比较复杂的话 显示一个框表示这是拖拽操作也行- -
#13
http://blog.csdn.net/dodducs/archive/2010/07/22/5755235.aspx
鄙人曾写过一个关于整行数据进行替换的小DEMO 但是没有加过边界安全设置等
你只要加上边界 把里面整行数据替换成只替换某一列就可以了
鄙人曾写过一个关于整行数据进行替换的小DEMO 但是没有加过边界安全设置等
你只要加上边界 把里面整行数据替换成只替换某一列就可以了
#14
你要的实现画面呈现拖拽效果 在
private void dataGridView1_CellMouseDown_1(object sender, DataGridViewCellMouseEventArgs e)
这个方法里就是代码
private void dataGridView1_CellMouseDown_1(object sender, DataGridViewCellMouseEventArgs e)
这个方法里就是代码
#15
不行啊 显示不出来
#16
你是不是没有增加一个新的 DataGidView?
你新建一个项目DEMO 把我的代码扔里边跑一下 了解一下程序思路
不可能跑不出来
你新建一个项目DEMO 把我的代码扔里边跑一下 了解一下程序思路
不可能跑不出来
#17
我不需要新增一个DataGridView啊
我只有一个DataGridView 在表里拖拽
我只有一个DataGridView 在表里拖拽
#18
你觉得可能么?
如果你不需要拖拽效果 当然一个就可以,,如果你要达到这种效果,,你肯定要借助控件
当然你可以选择 DataGridView 也可以选 Lable 看你想怎么用了 反正做法都一样
你如果不加控件 还想实现拖拽效果
我目前能想到的就是 你在用 .netFrameWork 3.0 用 WPF Canvas类自己去画一个出来!
你不想加控件在 .net 2.0里 实现字符跟着鼠标走?
如果你不需要拖拽效果 当然一个就可以,,如果你要达到这种效果,,你肯定要借助控件
当然你可以选择 DataGridView 也可以选 Lable 看你想怎么用了 反正做法都一样
你如果不加控件 还想实现拖拽效果
我目前能想到的就是 你在用 .netFrameWork 3.0 用 WPF Canvas类自己去画一个出来!
你不想加控件在 .net 2.0里 实现字符跟着鼠标走?
#19
如果你真的想 不加空间就实现字符跟着鼠标走,,在.net 2.0里
可能我知道的太少了吧,,我是没办法实现
可能我知道的太少了吧,,我是没办法实现
#20
现在有什么问题?
#21
他想就一个DataGridView 实现拖拽效果
#22
int ida = dgv1.CurrentCell.RowIndex;
int idb = dgv1.CurrentCell.ColumnIndex;
#23
TextBox显示不出来 拖拽已经可以了
#24
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;
#25
TextBox1.BringToFront();
加上这两句
加上这两句
#26
给你代码你不按着做 你不想加DataGridView 把 DataGridView 换成 TextBox不就完了
服了
#27
我本来就加的是TextBox 我就不明白为什么一定要DataGridView
还有 即便你是对的 我也没有必要一定照着你的做 收起你狂妄的口气 谢谢
#28
貌似还是不行
我的DataGridView是放在一个TabPage中的 会不会是因为TabPage把它遮住了?
#29
应该不会,你把TextBox也放在这个TabPage中,在初始化时把它隐藏。应该会显示的。
#30
现在已经出现那个TextBox了 但是位置不对 MouseMove事件里 TextBox的位置具体该怎么写啊?
#31
你的TextBox是只能在DataGridView控件上移动么?
就是这个控件DataGridView的MouseMove
我也去试试看
就是这个控件DataGridView的MouseMove
我也去试试看
#32
恩 就是单纯的坐标不正确 其他都可以了
#33
我用textBox1.Location = e.Location
感觉位置上有点偏差
感觉位置上有点偏差
#34
我搞出来了 要将TextBox的Parent设成DataGridView 这样就可以了
#35
hehe
#36
谢谢啦~ 结贴
#37
樓主認定TextBox了 把TextBox替換成單行的dataGridView 效果不是更好嗎?