2015-12-12 8 views
1

Я не могу получить GiveFeedback стрельба по событию с помощью моего ListView. Код, приведенный ниже, предназначен только для этого тестирования, и он обновляет текстовые метки из событий, чтобы увидеть, какие события стреляют и когда. label1 обновления при перетаскивании предмета, и label3, когда предмет падает. Но почему label2 никогда не обновляется? Что мне не хватает?Событие GiveFeedback не срабатывает

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(); 
} 

ответ

1
DoDragDrop(e.Item, DragDropEffects.All); 

Это где проблема началась. Вы используете метод формы DoDragDrop(). Событие GiveFeedback запускается на источнике перетаскивания, в отличие от других событий, которые срабатывают по целевой точке. Таким образом, вы подписали неправильное событие, это должно было быть this.GiveFeedback вместо listView1.GiveFeedback. Или более очевидное исправление, поскольку вы, похоже, хотите использовать D + D только для просмотра списка:

listView1.DoDragDrop(e.Item, DragDropEffects.All); 
+0

Спасибо! Такое легкое решение, но не приходит мне в голову. – darx

Смежные вопросы