【发布时间】:2010-08-06 15:06:28
【问题描述】:
我正在尝试实现增强的 TabControl/TabPage 类,以实现真正的 TabVisible 功能,因为 TabPage 的 Visible 属性无法按预期工作。
我正在使用 C#/WinForms/VS2005/.Net FW 2.0;我以这种方式实现了代码:
http://csharp.pastebin.com/AUnzRQLw
我制作了一个表单来测试它,选中/取消选中复选框以显示/隐藏我添加的一些 VisibleTabPage 控件 (http..//csharp.pastebin.com/MkGJGx2G)。但是,经过一个 在 CheckBox 上点击一定次数,以随机顺序,应用程序开始分配越来越多的内存,并使用相当多的 CPU 来显示/隐藏 TabPage 控件。
谁能指出错误在哪里?
【问题讨论】:
-
我建议在复选框状态发生更改时验证您是否正在重新初始化标签页。验证这一点的最佳方法是下载任何好的分析器(Windbg 等)并找出内存中存在哪些对象。
-
是的,我使用了内存分析器,发现 ArrayList 对象是罪魁祸首。我创建了一个私有 ArrayList,我在 TabControlEx 对象的整个生命周期中都维护它,这解决了问题。
标签: c# winforms visible tabpage