为什么 Form.Shows 它发生在内部的控件加载 VB.NET

Why Form.Shown its happening before controls inside get load VB.NET

提问人:Gus 提问时间:5/7/2023 更新时间:5/7/2023 访问量:32

问:

对不起,我的英语不好。

我试图在主表单显示后做一些事情,这是一个 porgress bar,问题是在图像绘制表单内部的内容之前它被填满了。我想看里面的图像和标签,然后开始循环。

我想要像javascript的Window.onload函数这样的东西

Private Sub FRM_CargaInicial_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
        LBL_Carga.Visible = True
        Dim Dt As DataTable = New DataTable
        If conexion.EjecutarSQL("EXEC [GIM_RECURSOS].[IMAGEN].[SP_IMPORTAR]", Dt) Then
            PRB_Carga.Maximum = Dt.Rows.Count
            PRB_Carga.Value = 0
            For Each fila As DataRow In Dt.Rows
                Iconos.Add(New OBJIcono(fila.Item("ID_INFORMACION"), fila.Item("CLAVE"),     fila.Item("VALOR")))
                PRB_Carga.Value += 1
            Next fila
        End If
        Me.Hide()
        FRM_Ingreso.Show()
    End Sub

我尝试了 PictureBox.LoadComplete 和其他事件,所有这些事件都是在表单加载完成之前抛出的。

vb.net 表单 事件 加载

评论

1赞 jmcilhinney 5/7/2023
您是否正在尝试创建显示主窗体加载进度的初始屏幕?
0赞 jmcilhinney 5/7/2023
该事件处理程序在 UI 线程上执行。每个线程一次只能执行一件事,因此,在执行该方法时,无法更新 UI。方法完成后,您只会看到最终状态。有各种各样的方法可以解决这个问题 - 一些技巧,一些好的做法 - 但 VB 内置了初始屏幕功能,并且已经使用了额外的线程,所以如果这是您要做的事情,那就是您应该使用的。Shown
0赞 Gus 5/9/2023
嗨,你的答案。同样的事情,在启动画面显示之前进行加载,并使用 Shown 事件,图像永远不会加载,只是隐藏初始屏幕并显示主窗体。@jmcilhinney
0赞 jmcilhinney 5/10/2023
如果您使用内置的初始屏幕功能,则没有理由使用该事件,因此您显然做错了。如果你对你实际想要实现的目标提供一个完整而清晰的解释,而不仅仅是你如何实现它,那么我们可能会提供一个适当的解决方案。Shown

答: 暂无答案