GiveFeedback事件未启动
本文关键字:启动 事件 GiveFeedback | 更新日期: 2023-09-27 18:26:43
我的ListView
控件无法触发GiveFeedback
事件。下面的代码只是用于此测试,它更新了事件的文本标签,只是为了查看哪些事件以及何时触发。label1
在拖动项目时更新,label3
在项目放下时更新。但为什么label2
从未更新?我错过了什么?
public Form1()
{
InitializeComponent();
listView1.ItemDrag += new ItemDragEventHandler(listView1_ItemDrag);
listView1.DragDrop += new DragEventHandler(listView1_DragDrop);
listView1.DragEnter += new DragEventHandler(listView1_DragEnter);
listView1.DragOver += new DragEventHandler(listView1_DragOver);
listView1.GiveFeedback += new GiveFeedbackEventHandler(listView1_GiveFeedback);
}
private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.All);
}
private void listView1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void listView1_DragOver(object sender, DragEventArgs e)
{
label1.Text = "DragOver " + DateTime.Now.ToString();
}
private void listView1_GiveFeedback(object sender, GiveFeedbackEventArgs e)
{
label2.Text = "GiveFeedback " + DateTime.Now.ToString();
}
private void listView1_DragDrop(object sender, DragEventArgs e)
{
label3.Text = "DragDrop " + DateTime.Now.ToString();
}
DoDragDrop(e.Item, DragDropEffects.All);
这就是问题的根源。您正在使用表单的DoDragDrop()方法。GiveFeedback事件是在拖动源上激发的,与在放置目标上激发的其他事件不同。所以你订阅了错误的活动,应该是这个。GiveFeedback而不是listView1.GiveFeedback.或者更明显的修复方法,因为你似乎只想为listview实现D+D:
listView1.DoDragDrop(e.Item, DragDropEffects.All);