0

现在,我面临一个非常奇怪的问题。我们有一个 .net 解决方案。这是一个比较大的解决方案,包含很多项目。在一个负责 GUI 的项目中,我们在客户端应用程序启动之前使用 VB.net 创建了许多 winforms(标签、按钮、列表框等)。最近,客户问我们为什么我们的客户端应用程序需要更多时间来初始化。

当我深入研究我们的代码时,我发现只有一个“Me.BtnMenu = New System.Windows.Forms.Button”子句需要大约 10 毫秒才能完成。实际上,在初始化客户端 GUI 之前,我们有数百个 Winform 需要构建。最近,我们将解决方案从 vs2008 迁移到 vs2010。对比一下,在vs2008版本中,“新建System.Windows.Forms.Button”的开销约为0~1ms,而在vs2010版本中,“新建System.Windows.Forms.Button”的开销约为10~ 20ms,最终延迟了 GUI 的初始化。更有趣的是,其他控件如 GroupBox、Panel、RadioButton 等在两个版本中都不会花费太多时间,只有按钮 deos。

有人对此有任何想法吗?它让我困惑了好几个星期,但我仍然无法理解。

4

1 回答 1

0

It could also be the parent of the Button object that is causing this issues. Sometimes if the Panel/Form is recalculating/Redrawing the layout when a new Control is added to its collection , a simple operation like adding a simple button would take more time. If you are using a custom panel or a layout that is calculated when controls are added/removed, trying adding the form elements directly to the form.

Also check if the parent form/panel has a method that would pause the redrawing of the form or stop the layout calculations, e.g. BeingUpdate/EndUpdate (or similar ones).

于 2013-01-15T00:08:34.767 回答