6
Die Methode wird zweimal hintereinander ausgeführt und es gibt keinen ersichtlichen Grund dafür. Es passiert in VS2010 Express (4.0) und in VS2008 (3.5).C# ListView DragDrop-Ereignis Methode zweimal pro Fall ausführen
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();
}
}
Sind Sie sicher, dass 'InitializeComponent()' keinen Dragdrop-Handler installiert? –
Um den obigen Kommentar von J. Knoeller zu wiederholen: Öffnen Sie die Datei Designer.cs und prüfen Sie, ob zusätzliche DragEnter- und DragDrop-Handler vorhanden sind. – BillW
Ok, hab es geschafft, danke! – OIO