【发布时间】:2017-05-09 03:34:19
【问题描述】:
比较简单的问题。
我有一个面板,上面有一些文本框,都是动态创建的。 用户填写一些文本框,然后继续关闭面板。
现在在代码中我使用该行;
Me.Pnl_Main.Controls.Clear()
这工作正常,面板内容被“删除”。
问题是,当文本框为相同目的重新创建时,它们仍然包含它们之前的值。
不幸的是,大多数 UI 都是这样创建的,这不可避免地会导致内存泄漏。
所以我的问题是,有没有合适的方法从内存中完全删除控件?还是我需要运行一个例程来将所有文本值设置为 Nothing?
提前致谢。
【问题讨论】:
-
我认为问题是在执行
.Clear()后,对您创建的文本框的引用仍然存在于某处。我认为您没有内存泄漏问题,因为您总是使用相同的文本框实例(这就是您看到以前文本的原因)。当然,文本框是在表单之外引用的,比泄漏是可能的。您能否展示如何创建文本框并将它们添加到面板的代码 -
Me.Pnl_Main.Controls.Clear()之后,您可以将 textbox 变量设置为空。 -
文本框实际上是我制作的用户控件的一部分(这样可以在动态创建大量控件时节省时间)。
-
Public PG1 As New ConditionReportPage1 Me.pnl_main.controls.add(PG1)
-
如果文本框是 UserControl 的一部分,那么您无需担心内存泄漏。当 UserControl 将被释放时,文本框也将被释放。
标签: vb.net memory textbox controls panel