我的 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 事件在拖动源上触发,这与在放置目标上触发的其他事件不同。所以你订阅了错误的事件,应该是 this.GiveFeedback 而不是 listView1.GiveFeedback。或者更明显的修复,因为您似乎只想为 ListView 实现 D+D:
listView1.DoDragDrop(e.Item, DragDropEffects.All);
关于c# - GiveFeedback 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34243040/