[英]C# ListView DragDrop Event Method Executing Twice Per Drop
該方法連續執行兩次,沒有明顯的理由這樣做。 它發生在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();
}
}
我正在關注Microsoft示例,並沒有注意到GUI.Designer.cs(自動,由IDE)和GUI.cs(手動,來自示例)中的聲明是多余的。
=== GUI.cs ===
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);
}
=== GUI.Designer.cs ===
//
// lvwFiles
//
...
this.lvwFiles.DragDrop += new System.Windows.Forms.DragEventHandler(this.lvwFiles_DragDrop);
this.lvwFiles.DragEnter += new System.Windows.Forms.DragEventHandler(this.lvwFiles_DragEnter);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.