以下是我不知道如何在.Net中正确完成的一些事情,但我确信某些解决方案肯定存在。
我有一个像对话框那样打开的表单,在(表单)form_load下我有一些数据检查,之后我调用一个可能需要10秒钟处理的程序。
在这段时间里,我的表格没有显示,直到我的流程没有完成,我可以在我的主表单中看到一些“菜单垃圾”而不是正在处理的新表格中的进度条。
我看到的第二件事可能接近第一个问题是,在我的某些表单中,当某个进程的结果显示但程序(进度条)正确生成时,进度条不会结束。看起来就像是在一些异步任务中使用进度条。
如何解决这些问题并在我的程序开始之前显示我的表格? 如何获得进度条以显示值可靠?或者我可以说它在VB6中有效吗?
对于第一个问题,我尝试:
Me.Activate
or
Me.Refresh
Call myProcedureWithProgressBar(myArgs)
从Form_Load但没有结果。
表格在我的程序结束时显示,但应该在之前显示。
答案 0 :(得分:1)
事件Form_Load
执行之前的代码显示Form
。您可以创建Timer
并使用它在表单加载后自动执行代码:
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