winforms:表单加载时性能下降

时间:2016-03-07 09:20:48

标签: vb.net forms winforms flowlayoutpanel form-load

我有一个VB.NET winforms应用程序。其中一个表单包含一个flowlayoutpanel,我在表单加载事件中使用成对的label-textbox动态(以编程方式)填充。我的flowlayoutpanel是在设计时创建的,所有属性都设置为默认属性,但下面的属性除外:

  • AutoSize:true
  • AutoScroll:true
  • Dock:fill
  • FlowDirection:TopDown

然后我使用表单加载事件中的下面的代码填充它:

Private Sub MyForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load
    Dim lbl As Label
    Dim txt As TextBox
    Dim flowLayout As FlowLayoutPanel
    Dim g As Graphics


For i As Integer = 0 To 253
    lbl = New Label
    lbl.Text = i.ToString("000") + ":"
    lbl.Anchor = AnchorStyles.None
    lbl.AutoSize = True

    txt = New TextBox
    txt.Text = "<" + i.ToString.PadLeft(3, " ") + ">"
    txt.MaxLength = 5
    txt.Anchor = AnchorStyles.None
    txt.ReadOnly = True
    g = txt.CreateGraphics
    txt.Width = g.MeasureString(txt.Text, txt.Font).Width + 5
    g.Dispose()

    flowLayout = New FlowLayoutPanel
    flowLayout.FlowDirection = FlowDirection.LeftToRight
    flowLayout.AutoSize = True
    flowLayout.Anchor = AnchorStyles.None
    flowLayout.Margin = New Padding(0)
    flowLayout.Padding = New Padding(0)

    flowLayout.Controls.Add(lbl)
    flowLayout.Controls.Add(txt)

    Me.FlowLayoutPnl.Controls.Add(flowLayout)
Next
End Sub

如上所述,FlowLayoutPnl是在设计时创建的,其上的组件是在TopDown流向之后添加的。

以上代码生成此result

这里的问题是,打开此表单需要花费很多时间(几秒钟)才能打开,因为它正在执行表单加载事件中的所有内容。打开需要35秒!当所有的东西都完成后,表格在35秒后变得可见......

所以我想知道是否有某种方法来加速表单加载。我在这里读了一些关于实现的帖子,并在加载时显示某种启动画面,指示用户正在加载甚至执行异步加载。如何从表单加载事件创建后台线程以执行此操作?任何人都可以指导我朝着正确的方向前进一个很小的例子将受到高度赞赏。这种问题通常如何解决?

0 个答案:

没有答案