0

我有一个 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 秒后变得可见......

所以我想知道是否有某种方法可以加快表单加载。我在这里阅读了一些关于实现并在加载时显示某种启动屏幕的帖子,指示用户正在加载它甚至执行异步加载。从表单加载事件创建一个后台线程来做这些事情怎么样?任何人都可以指导我正确的方向吗?一个非常小的例子将受到高度赞赏。这类问题一般是怎么解决的?

4

0 回答 0