我的应用程序使用Windows窗体中的allowdrop=true来进行拖放操作,并且具有许多自定义事件。当我运行配置文件时,我发现大多数对象都是droptarget对象的帮助。

请让我知道如何解决它。

我在某处读取它并将其设置为false可以解决此问题,但是我的控件已加载到另一个容器的内存中,即使关闭了,结果也没有从内存中删除。当它显示时,我只是第一次获得构造函数事件,即使我们将其关闭,之后它仍保留在内存中。

因此,我没有收到任何其他事件,也没有任何事件执行,并且当我从容器中关闭并打开控件时,我继续看到内存泄漏。让我知道如何解决。我只有在关闭容器时才得到处理事件。

最佳答案

解决方法是:不要将Form用作放置目标,使用像容器这样的小面板来切换AllowDrop属性。

在某些情况下,以下hack解决了该问题。

void Form1_DragDrop(object sender, DragEventArgs e)
{
    //reset the AllowDrop and call GC to collect memory
    AllowDrop = false;
    GC.Collect();
    GC.Collect();
    AllowDrop = true;
}

10-06 01:03