我有一个VB.NET winforms应用程序。其中一个表单包含一个flowlayoutpanel,我在表单加载事件中使用成对的label-textbox动态(以编程方式)填充。我的flowlayoutpanel是在设计时创建的,所有属性都设置为默认属性,但下面的属性除外:
然后我使用表单加载事件中的下面的代码填充它:
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秒后变得可见......
所以我想知道是否有某种方法来加速表单加载。我在这里读了一些关于实现的帖子,并在加载时显示某种启动画面,指示用户正在加载甚至执行异步加载。如何从表单加载事件创建后台线程以执行此操作?任何人都可以指导我朝着正确的方向前进一个很小的例子将受到高度赞赏。这种问题通常如何解决?