gpt4 book ai didi

C# ListView DragDrop 事件方法每次拖放执行两次

转载 作者:太空狗 更新时间:2023-10-29 21:47:54 24 4
gpt4 key购买 nike

该方法连续执行两次,没有明显的理由这样做。它发生在 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);

关于C# ListView DragDrop 事件方法每次拖放执行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com