怎样实现这样一个简单的动画效果!非常急!

savl 2003-06-02 04:15:24
由于一些过程的运行时间长,为了在界面上用一个动画来表示过程在运行,我的代码如下: 但并没有出现动画效果啊,这是为什么,该如何实现,望指教
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Me.Timer1.Enabled = True
Me.Timer1.Start()
xx() '这个过程运行时间很长

End Sub


Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Static Dim Counter As Integer = 0
Counter = Counter + 10
If Counter = 150 Then
Label3.Text = "请稍候"
End If
If Counter = 300 Then
Label3.Text = "请稍候…"
End If
If Counter = 450 Then
Label3.Text = "请稍候……"
End If
If Counter = 600 Then
Label3.Text = "请稍候………"
Counter = 0
End If
End Sub
...全文
31 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cncat 2003-06-08
  • 打赏
  • 举报
回复
是不是一直显示:请稍候………
加一条:“refresh" 就好了
在过程里用静态变量是好的,比用module级的好
liduke 2003-06-08
  • 打赏
  • 举报
回复
用多线程做吧
savl 2003-06-07
  • 打赏
  • 举报
回复
up
zhouyonglijun 2003-06-07
  • 打赏
  • 举报
回复
up
aspsea 2003-06-07
  • 打赏
  • 举报
回复
up
Montaque 2003-06-07
  • 打赏
  • 举报
回复
呵呵,看这段代码:
WithEvents cTest As TestLoading
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
cTest = New TestLoading
cTest.xx()
End Sub

Private Sub ToggleLoading(ByVal i As Integer) Handles cTest.ChangeStatus
Select Case i Mod 4
Case 0
Label1.Text = "请稍候"
Me.Refresh()
Case 1
Label1.Text = "请稍候…"
Me.Refresh()
Case 2
Label1.Text = "请稍候……"
Me.Refresh()
Case 3
Label1.Text = "请稍候………"
Me.Refresh()

End Select
End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Public Class TestLoading
Public Event ChangeStatus(ByVal i As Integer)
'一个很长的操作。
Public Sub xx()
Dim i, j As Integer
For i = 0 To Integer.MaxValue
Console.WriteLine(i)
If i Mod 1000 = 0 Then
RaiseEvent ChangeStatus(j)
j += 1
End If
Next

End Sub
End Class
savl 2003-06-07
  • 打赏
  • 举报
回复
up
luckyzhw 2003-06-06
  • 打赏
  • 举报
回复
Public Class FrmHelloWorld
Inherits System.Windows.Forms.Form
Dim counter As Integer = 0

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Enabled = True
Timer1.Start()
xx()
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
counter += 10

If counter = 50 Then
Label1.Text = "请稍候"
End If
If counter = 100 Then
Label1.Text = "请稍候…"
End If
If counter = 150 Then
Label1.Text = "请稍候……"
End If
If counter = 200 Then
Label1.Text = "请稍候………"
counter = 0
End If

End Sub
End Class
luckyzhw 2003-06-06
  • 打赏
  • 举报
回复
你的问题出在“Static Dim Counter As Integer = 0”不要放在Sub里面,放到sub外面就可以了。

我这里测试通过~
Kain 2003-06-06
  • 打赏
  • 举报
回复
doevents
szch 2003-06-06
  • 打赏
  • 举报
回复
同意,但还要加
appilcation.doevent
savl 2003-06-06
  • 打赏
  • 举报
回复
!!!根本实现不了这个效果,我的要求是一边运行那个长时间的xx()过程,一边在界面上显示动画。
可是按照上面各位的方法,一直在运行xx()过程,而没有出现动画,这是为什么?
另外 appilcation.doevent 有什么用
czlvc 2003-06-06
  • 打赏
  • 举报
回复
被楼上的把问题解决了 我只能蹭分了 呵呵
savl 2003-06-05
  • 打赏
  • 举报
回复
up
savl 2003-06-05
  • 打赏
  • 举报
回复
难道没人会吗?
savl 2003-06-05
  • 打赏
  • 举报
回复
up

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧