DragEnter、DragOver和DragDrop的区别?

hengyi82 2008-10-08 01:16:25
请问treeview控件中这三个事件DragEnter、DragOver和DragDrop的区别,特别是DragEnter和DragOver,msdn上的解释都说是“将对象拖入控件的边界时发生”,真有些搞不懂。各位知道的能不能举例说明一下。
...全文
2357 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
brallow 2008-10-08
  • 打赏
  • 举报
回复
1:DragEnter是已经进入拖放状态,首次进入某个控件时,在这个控件中发生的事件。
2:ItemDrag是你“开始”拖动treeview中某个item时产生的,在treeview中产生的事件。

仔细分析一下他们的区别在于:
1:在一次拖放过程中DragEnter可能产生多次(拖出去又拖回来);而ItemDrag只会产生一次这个事件,即开始拖放时;
2:DragEnter可以在同一个控件上,也可以在不同的控件上产生多次(没有限制);而ItemDrag只会在这个Item(节点)所属的TreeView上产生一次!

其实,每个事件都有发生的时机和产生源等,仔细分析一下你会发生其实很简单,每个事件与事件之间肯定是可以区分的。
hengyi82 2008-10-08
  • 打赏
  • 举报
回复
那既然如此,DragEnter岂不是和ItemDrag没有了区别?呵呵,对这些事件没有形成清晰概念,可能是问的罗嗦了点。
yilanwuyu123 2008-10-08
  • 打赏
  • 举报
回复
mark
brallow 2008-10-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hengyi82 的回复:]
那ItemDrag也是“当用户开始拖动节点时发生”的呀。phy说“DragEnter是拖动后首次进入某个控件内发生”,可我一直对treeview控件进行操作,鼠标从拖动到释放始终是在treeview控件中进行,好象不存在“拖动后首次进入某个控件内发生”这个状态吧,因为鼠标拖动一个树节点时就已经在treeview控件中了,没去别的控件呀。
[/Quote]
晕,多理解一下嘛……当你的拖动刚开始时,它不是进入(DragEnter)这个treeview控件吗?一开始的这个也要算的。

hengyi82 2008-10-08
  • 打赏
  • 举报
回复
那ItemDrag也是“当用户开始拖动节点时发生”的呀。phy说“DragEnter是拖动后首次进入某个控件内发生”,可我一直对treeview控件进行操作,鼠标从拖动到释放始终是在treeview控件中进行,好象不存在“拖动后首次进入某个控件内发生”这个状态吧,因为鼠标拖动一个树节点时就已经在treeview控件中了,没去别的控件呀。
angelababa~ 2008-10-08
  • 打赏
  • 举报
回复
设置控件的allowdrag=true
下面是我写的拖动datagridview行数据的例子

dataGridView2.DoDragDrop(e.RowIndex, DragDropEffects.Copy);//复制datagridview的数据

private void dataGridView2_DragEnter(object sender, DragEventArgs e)
{
if (flag == 2)
{
if (e.Data.GetDataPresent(typeof(int)))
{
e.Effect = DragDropEffects.Copy;
}
else
e.Effect = DragDropEffects.None;
}
}
private void dataGridView2_DragDrop(object sender, DragEventArgs e)
{
if (flag == 2)
{
out_list.Add(drag_id);//添加输出列表ID
bind_out_list();//绑定输出列表
dataGridView1.Rows.Remove(dataGridView1.CurrentRow);//从datagridview1里移除该行数据
}
}

brallow 2008-10-08
  • 打赏
  • 举报
回复
1:DragEnter是你拖动后首次在进入某个控件内发生。
2:DragOver发生在DragEnter之后,当你移动拖动对象(鼠标)时发生,类似于MouseMove。
3:DragDrop当你松开鼠标时发生。

110,538

社区成员

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

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

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