? vb.net亚博足球娱乐场注册--任意三数字加yabo.com直达官网之VB.NET Event RaiseEvent用处 亚博足球娱乐场注册,亚博娱乐全天彩,亚博官网赢钱不给
VB.net 2010 视频亚博足球娱乐场注册--任意三数字加yabo.com直达官网 VB.net 2010 视频亚博足球娱乐场注册--任意三数字加yabo.com直达官网 VB.net 2010 视频亚博足球娱乐场注册--任意三数字加yabo.com直达官网
SQL Server 2008 视频亚博足球娱乐场注册--任意三数字加yabo.com直达官网 c#入门经典亚博足球娱乐场注册--任意三数字加yabo.com直达官网 Visual Basic从门到精通视频亚博足球娱乐场注册--任意三数字加yabo.com直达官网
当前位置:
首页 > 编程开发 > VBnet >
  • vb.net亚博足球娱乐场注册--任意三数字加yabo.com直达官网之VB.NET Event RaiseEvent用处

  • 2019-06-19 17:16 来源:未知

一、代码

Private?Sub?Form1_Load(ByVal?sender?As?Object,?_
???????????????????????ByVal?e?As?System.EventArgs)?_
???????????????????????Handles?MyBase.Load
????Button1.Text?=?"Start"
????mText?=?New?TimerState
End?Sub
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?_
??????????????????????????ByVal?e?As?System.EventArgs)?_
??????????????????????????Handles?Button1.Click
????mText.StartCountdown(10.0,?0.1)
End?Sub

Private?Sub?mText_ChangeText()?Handles?mText.Finished
????TextBox1.Text?=?"Done"
End?Sub

Private?Sub?mText_UpdateTime(ByVal?Countdown?As?Double)?_
?????????????????????????????Handles?mText.UpdateTime
????TextBox1.Text?=?Format(Countdown,?"##0.0")
????'?Use?DoEvents?to?allow?the?display?to?refresh.
????My.Application.DoEvents()
End?Sub

Class?TimerState
????Public?Event?UpdateTime(ByVal?Countdown?As?Double)
????Public?Event?Finished()
????Public?Sub?StartCountdown(ByVal?Duration?As?Double,?_
??????????????????????????????ByVal?Increment?As?Double)
????????Dim?Start?As?Double?=?DateAndTime.Timer
????????Dim?ElapsedTime?As?Double?=?0

????????Dim?SoFar?As?Double?=?0
????????Do?While?ElapsedTime? ????????????If?ElapsedTime?>?SoFar?+?Increment?Then
????????????????SoFar?+=?Increment
????????????????RaiseEvent?UpdateTime(Duration?-?SoFar)
????????????End?If
????????????ElapsedTime?=?DateAndTime.Timer?-?Start
????????Loop
????????RaiseEvent?Finished()????End?Sub
End?Class

?

?

二、解释Event和RaiseEvent意义

Event?相当于给类定义了一个自定义事件,可以在调用此类的时候,给此事件添加代码

RaiseEvent?是给自定义事件添加的代码执行的位置,

简单说,如果你只是添加个事件,没有在相应位置触发事件,等于事件没定义

?

三、解释代码

1.首先点击?Button1_Click然后就运行:
mText.StartCountdown(10.0,?0.1)?
在这个StartCountDown函数中通过:
RaiseEvent?UpdateTime(Duration?-?SoFar)??触发事件,就会调用上面:Private?Sub?mText_UpdateTime(ByVal?Countdown?As?Double)?Handles?mText.UpdateTime?这个过程。更新数值,显示在textbox1上面。

2.当运行完?Do?While?ElapsedTime? RaiseEvent?Finished()
就会调用:
Private?Sub?mText_ChangeText()?Handles?mText.Finished?
????TextBox1.Text?=?"Done"?
End?Sub?
显示Done。

?

四、通俗理解

可以这么理解
private?sub?xx
起床()
raiseevent?过程()
上班()
end?sub
----
写这个方法的人知道有这么个过程,但是不确定具体应该怎么做
比如是做公交还是打的,还是拼车,还是其他什么,于是提供一个
事件给外部使用,其他使用该方法的人可以在这个事件里面写具体的
过程
----
通常用在继承的控件中,比如控件中button的click事件,因为控件已经封装在外部是不能再写该事件的,
而写控件的人又不能确定在click事件中应该怎么操作,于是提供一个公开的事件让外面的人自己去写,
等于是外部调用的人间接写click事件

相关亚博足球娱乐场注册--任意三数字加yabo.com直达官网