Vb.net 从form_load事件处理程序显示表单并显示progressbar
下面是一些我不知道如何在.Net中正确处理的事情,但我确信一定存在某种解决方案 我有一个像对话框一样打开的表单,在表单加载下我有一些数据检查,然后我调用一个可能需要10秒处理的过程。Vb.net 从form_load事件处理程序显示表单并显示progressbar,vb.net,Vb.net,下面是一些我不知道如何在.Net中正确处理的事情,但我确信一定存在某种解决方案 我有一个像对话框一样打开的表单,在表单加载下我有一些数据检查,然后我调用一个可能需要10秒处理的过程。 在这段时间里,我的表单直到我的流程没有完成才会显示,我可以在我的主表单中看到一些“菜单垃圾”,而不是正在处理的新表单中的progressbar 我看到的第二件事可能接近第一个问题是,在我的一些表单中,当显示某个进程的结果时,progressbar并没有结束,但程序(对于progressbar)被正确地生成。这就像p
在这段时间里,我的表单直到我的流程没有完成才会显示,我可以在我的主表单中看到一些“菜单垃圾”,而不是正在处理的新表单中的progressbar 我看到的第二件事可能接近第一个问题是,在我的一些表单中,当显示某个进程的结果时,progressbar并没有结束,但程序(对于progressbar)被正确地生成。这就像progressbar在某个异步任务中工作一样 如何解决这些问题并在程序开始之前显示我的表单? 如何让progressbar显示可靠的值?或者我可以说它在VB6中工作更好 对于第一个问题,我尝试:
Me.Activate
or
Me.Refresh
Call myProcedureWithProgressBar(myArgs)
从表单加载但没有结果。当我的过程完成时显示表单,但应在之前显示。事件
Form\u Load
在显示表单之前执行代码。您可以创建一个计时器
,并使用它在表单加载后自动执行代码:
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
有趣的把戏。我不明白它是怎么工作的,但它是工作的。我从OnFormLoad开始我的进程,在禁用计时器之后,程序的行为正常,就像它应该的那样。现在,如何处理progressbar。大约是50%,而不是100%?问题是为了显示进程结果,我必须隐藏它们。这是一个让它显示为“应该”的技巧吗?我不知道为什么你的ProgressBar
工作不正常。也许是你做的事。你们应该分享和它相关的代码,以便人们可以帮助你们。好的,谢谢,我会尝试准备一个可以接受的例子,以便寻求帮助。这一个太大,和程序的其他部分联系太紧密,不适合在这里发布。我尝试了Refresh(),但仍然无法正常工作。使用一个可能对您有用的函数更新了我的答案