【发布时间】:2010-01-16 00:55:36
【问题描述】:
该方法连续执行两次,并且没有明显的理由这样做。 它发生在 VS2010 Express (4.0) 和 VS2008 (3.5) 中。
public GUI()
{
InitializeComponent();
this.lvwFiles.DragDrop += new System.Windows.Forms.DragEventHandler(this.lvwFiles_DragDrop);
this.lvwFiles.DragEnter += new System.Windows.Forms.DragEventHandler(this.lvwFiles_DragEnter);
}
private void lvwFilesAdd(string path, string[] paths)
{ ... }
private void lvwFilesWrite()
{ ... }
private void lvwFiles_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
private void lvwFiles_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
var paths = (string[])e.Data.GetData(DataFormats.FileDrop);
var path = Path.GetDirectoryName(paths[0]);
lvwFilesAdd(path, paths);
lvwFilesWrite();
}
}
【问题讨论】:
-
你确定
InitializeComponent()没有安装拖放处理程序吗? -
只是为了回应上面 J. Knoeller 的评论:打开 Designer.cs 文件并检查是否存在其他 DragEnter 和 DragDrop 处理程序。
标签: c# listview events drag-and-drop