我正在处理一个感觉迟缓的 WinForms 项目。它由数百个用户控件组成。如果有一部分 UI 功能(即使未在应用程序的其他任何地方使用),它会封装在用户控件中。我已经使用 ANTS 探查器多次完成该项目,大部分繁重的代码似乎都在各种控件构造函数中。
在我开始删除用户控件之前,它们是否代表了 WinForms 应用程序的大量开销,而不是仅布置没有用户控件的表单(例如,仅内部控件)?
最佳答案
用户控件是其他控件的容器。拥有数百个可能意味着您的项目中有数百个窗口。窗口是一个非常昂贵的操作系统对象。当您拥有超过 50 个左右时,它们开始明显拖累绘画性能。
与 Outlook 的比较是恰当的。这是一个很好的程序 block 。它只有不到 50 个窗口。使用 Spy++ 很容易看到。
区别在于 OnPaint。 Microsoft 编写了很多代码,他们并没有在表单上放置很多控件。
关于c# - 用户控件中有很多开销吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3472850/