1. <wbr id="m8vu6"></wbr>

      <del id="m8vu6"><center id="m8vu6"><source id="m8vu6"></source></center></del>
        <p id="m8vu6"><sub id="m8vu6"></sub></p>

        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事件

        相關教程
        免费看成年人视频大全_免费看成年人视频在线观看