【问题标题】:C# WinForms, remove unused controlsC# WinForms,删除未使用的控件
【发布时间】: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


【解决方案1】:

@它的坏习惯。在项目中保留未使用的控制权..

作为技术视图,它在页面加载/母版页加载时会产生问题...... 它向您显示异常...

注意:永远不要在母版页中保留注释代码......如果服务器不理解发布的代码..它会显示页面但我们无法执行它

【讨论】:

    【解决方案2】:

    您可能不想删除所有未编码的控件。然后,您将删除对 UI 有贡献但从未被设计器外部引用的面板和标签。

    我在这里看到两个不同的问题。

    一个是你有一个“滞后”的形式。为此,只需运行一个分析器,也许还有一个内存分析器来找到这个问题的根源。然后解决这个问题。工作完成,用户满意。

    另一个是如果有额外的控件对用户体验没有任何贡献,例如它们总是隐藏的。这不会给用户带来任何问题,但意味着使用更多控件来维护代码可能会更加困难。我建议手动检查并识别这些并删除它们。任何自动化工具都会出错。

    第一个问题可能是更高的优先级。

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多