0

以下是一些我不知道如何在 .Net 中正确完成的事情,但我确信肯定存在一些解决方案。

我有一个像对话框一样打开的表单,在(那个)form_load 下我有一些数据检查,然后我调用一个可能需要 10 秒来处理的过程。
在此期间,直到我的流程未完成,我的表单才会显示,并且我可以在我的主表单中看到一些“垃圾菜单”,而不是那些正在处理的新表单中的进度条。

我看到的第二件事可能接近第一个问题是,在我的某些表单中,当显示某些过程的结果但程序(用于进度条)正确制作时,进度条不会结束。似乎进度条在某些异步任务中工作。

如何解决这些问题并在我的程序开始之前显示我的表格?如何让进度条显示可靠的值?或者我可以说更好,就像它在 VB6 中工作一样?

对于第一个问题,我尝试:

Me.Activate
or 
Me.Refresh

Call myProcedureWithProgressBar(myArgs)

来自 Form_Load 但没有结果。
表格在我的程序完成时显示,但应该在之前显示。

4

1 回答 1

1

事件在显示之前Form_Load执行代码。您可以创建一个并使用它在表单加载后自动执行代码:FormTimer

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Timer1.Start()
End Sub

Private Sub OnFormLoaded(sender As Object, e As EventArgs) Handles Timer1.Tick
    Timer1.Enabled = False

    '...
End Sub

并确保您像我一样停止该方法上的计时器,并确保您阻止用户做一些可能干扰执行的事情(单击按钮,关闭表单......)。希望能帮助到你。


关于这个ProgressBar问题,如果没有更多信息或代码,我不知道可能是什么问题。也许你可以尝试这样的事情:

Public Sub UpdateProgressBar(ByVal cont As Integer, ByVal max As Integer, ByRef objTarget As ProgressBar)
    Dim dProgress As Double = cont * 100 / max
    objTarget.Value = CInt(dProgress)
    objTarget.Refresh()
End Sub
于 2013-01-28T08:57:41.970 回答