最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
當前位置:
首頁 > 編程開發 > VBnet >
  • vb.net教程之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 < Duration
            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 < Duration 這個循環時候,就會觸發事件:
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事件

pk10赛车冠军技巧
最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
北京麻将馆四人麻将 湖北11选5开奖结果 三分彩计划网 网络问卷调查赚钱 作弊 大众麻将烂牌胡牌牌型 dnf稳赚不赔的方法 腾讯分分彩走势图官方 14场胜负彩最新预测公告彩票 北京11选5前三走势图带连线