【发布时间】:2012-06-11 14:21:32
【问题描述】:
我正在开发一个 C# 项目(.net 3.5,Visual Studio 2008),并有一个简短的问题想问大家:
是否可以删除从未使用过的控件?
我的意思是,是否可以删除已添加到表单但尚未在代码库中的任何位置(设计器之外)引用的控件?
我正在查看的 WinForms 内容有数十个具有通用名称的控件(“textBox1、按钮 4 等),这些控件不被代码库使用(甚至不被用户看到)。
大多数表单在控件之上都有控件(不是我的决定),并且面板和拆分器有很多分层。这导致了一些控件隐藏在视图之外的情况,这些控件永远不会被使用或附加到任何事件处理程序。
我担心这些额外的控件会留下很大的内存占用,或导致性能问题 - 我已经看到表单在使用约 10 分钟后变得迟钝。
显然,我不想跳入设计器文件并开始删除对不必要控件的引用。代码库已检入源代码控制,但自首次检入以来已经有很多很多 MANY 次提交。
我正在考虑迭代以下模式:
- 剪切面板
- 将其粘贴到新的(空)项目中
- 删除我知道在主项目中未使用的所有控件(任何具有通用名称的控件)
- 将面板粘贴回主项目并重新构建(以检查错误)
有没有(可能)更快的方法来做到这一点?有没有更安全的方法来做到这一点?是否有任何我可以针对代码库运行的第三方工具(可能类似于分析器?)可以告诉我应该删除哪些控件?
谢谢
【问题讨论】:
-
不需要单独的项目。在 Visual Studio , ReSharper & CTRL+SHIFT+B 的帮助下在同一个项目中进行
-
小心移除面板和拆分器,因为它们可能控制布局,即使它们从未直接交互。
-
性能滞后可能不是由于额外的控制,特别是如果它随着时间的推移而构建。这听起来更像是某种泄漏
-
“文档大纲”视图 (Ctrl+Alt+T) 如果与设计器视图结合使用会很有帮助,因为您可以选择控件并在设计器中看到它们被选中。它向您显示树层次结构中的每个控件,无论是否“隐藏”。它还可以在重要的罕见情况下更改控件的 Z 顺序。
-
@Tergiver 感谢提供文档大纲提示(虽然,我从 06 年就开始使用 Visual Studio,但我仍然没有使用大部分功能)
标签: .net winforms visual-studio-2008 c#-3.0