我有一个 VB.NET winforms 应用程序。它的一种形式包含一个flowlayoutpanel,我在表单加载事件中动态(以编程方式)填充标签文本框对。我的 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 流方向添加的。
上面的代码产生了这个结果。
这里的问题是,打开这个表单需要很长时间(几秒钟)才能打开,因为它正在执行表单加载事件中的所有内容。打开需要35秒!当所有的东西都完成后,表格在 35 秒后变得可见......
所以我想知道是否有某种方法可以加快表单加载。我在这里阅读了一些关于实现并在加载时显示某种启动屏幕的帖子,指示用户正在加载它甚至执行异步加载。从表单加载事件创建一个后台线程来做这些事情怎么样?任何人都可以指导我正确的方向吗?一个非常小的例子将受到高度赞赏。这类问题一般是怎么解决的?