VB.NET中的sender、e和handles

來源:互聯網
上載者:User

    由於收費系統中,碰到幾次事件的調用,對其中參數不是很理解,就總結了一下vb.net中的事件。

在vb6.0中事件非常簡單,就拿最常用的單擊按鈕事件來說,vb中的代碼是:

Private Sub Command1_Click()MsgBox ("你點擊了button1")End Sub


    調用command1的單擊事件也很簡單:

Private Sub Command2_Click() Command1_ClickEnd Sub


      在vb6.0中,呼叫事件是根據事件名來調用的,不需要參數。

    但是在vb.net中,事件添加了參數:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        MsgBox("你點擊了button1")    End Sub

    在vb.net中事件多了三個附加資訊:sender、e和handles。仍以button1的單擊為例,說明這三個參數的含義:

    Private Sub But_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        MsgBox(sender.ToString)        MsgBox(e.ToString)    End Sub

    注意觀察,原本的button_Click變為了but_Click,這在vb6.0中是不會執行的,但在vb.net中不影響事件的執行,說明在vb.net中,事件不再僅依賴事件名。下來來看一下執行結果:

        

    sender 的類型為object類型,顯示的結果說明的是:直接引起事件的是form的button,button上的文字為“Button1”。e的類型是EventArgs,類型解釋為:EventArgs是一個委託聲明,是包含事件數目據的類的基類,用於傳遞事件的細節,第二個顯示的說明是:為這個事件提供資料的是滑鼠。

    再說handles,在我理解看來,這是一個委託,相當於由handles後面的參數間接引發事件,下面我說一下我對單擊button1事件執行過程的理解:當單擊button1時,handler後面的button1間接引發事件,事件的直接引發者是button1這個按鈕即sender,然後滑鼠把需要執行事件所需的參數傳遞給事件即e,然後代碼執行。以button1和button2的單擊事件為例:

    Private Sub But_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        MsgBox("你點擊了button1")    End Sub    Private Sub Butt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click, Button1.Click        MsgBox("你點擊了button2")        MsgBox(sender.ToString)        'AddHandler Button1.Click, AddressOf Button3_Click    End Sub

    單擊button1的結果:

        

    這說明,單擊button1時還增加了button2的單擊事件,需要說明的是,這樣的代碼方法,單擊button1,會先執行button2的代碼,再執行button1的代碼。

        AddHandler Button1.Click, AddressOf Button3_Click        RemoveHandler Button1.Click, AddressOf Button3_Click

    這兩行代碼想對容易理解,需要說明的是addhandler和removehandler後面的第一個參數是“委託誰執行調用的事件”,第二個參數是“要執行的事件”,通過這兩行代碼可以在第三方事件中很容易進行事件的委託和取消委託。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.