【问题标题】:Performance of Panel vs User Control in C# WinformsC# Winforms 中面板与用户控件的性能
【发布时间】:2020-09-08 23:59:36
【问题描述】:

在很多在线 UI 设计的 Youtube 教程中,我经常看到他们使用面板控件作为矩形(没有子控件)。我想知道它是否会通过创建一个新的空白用户控件并将其用作矩形来提高性能。

我猜简单的答案是:

“没有明显的区别,还不如用一个面板”

但如果我有一点点提高性能的机会,我会接受。

编辑:抱歉没有澄清,对于一个空面板,您只需设置它的背景颜色,与用户控件相同,创建一个矩形。

【问题讨论】:

  • 提高性能 - 哈哈。一个“更简单”的控件可能是一个标签,但在这个级别上不可能实现性能“提升”。事实上,在提升性能之前,您需要确定性能问题
  • 将面板控件用作矩形?这是什么意思?您是指用于绘图的表面还是用于托管其他控件的容器?要提升什么性能?
  • 可能只是一个“有边界的东西”,对吧?
  • 没有区别。只有当你有很多 几十个 时,这才有意义。此时您既不使用,也使用表单的 Paint 事件来调用 Graphics.FillRectangle()。
  • 就 windows 而言,空面板与空用户控件的作用相同。它们只是两个控件,它们的渲染相同。无论如何,这个问题是徒劳的,很可能是 XY 问题,这意味着您的实际问题可能是我们不知道的其他问题,或者您正在尝试做的事情需要重新考虑

标签: c# winforms performance


【解决方案1】:

让我们考虑一下这两种方法。一方面,我们将有一个面板控件,它在后台运行一些逻辑。另一方面,我们有一个用户控件,它(可能)在引擎盖下有一个更薄的逻辑。这就是为什么您可能认为您的用户控件可能会执行得更好。

然而,为了正确地找到你的假设,你应该

  • 旨在了解幕后发生的事情(很遗憾,这可能不是一种选择)
  • 做一些压力测试(不过,这是一个选项)

您应该想象一些可能实际发生的情况,例如在您的 UI 上有许多这样的面板或用户控件。让我们夸大它。让我们实现一个 UI,您可以在其中添加数千个面板,另一个添加数千个用户控件。你可以比较一下:

  • 绘制 UI 所需的时间
  • 重复重绘 UI 所需的时间,可能 100 次
  • 内存使用情况
  • 事件处理
  • 多线程

因此,您可以通过参考现实证据来找到问题的答案。但重要的是要澄清,此时这仅具有理论上的重要性,因为在实践中,如果由于这个原因而发生实际性能问题,那么问题可能与您在实施压力测试时预期的不同。

【讨论】:

    猜你喜欢
    • 2018-01-10
    • 1970-01-01
    • 2011-12-09
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多