簡體   English   中英

使用ByRef和ByVal

[英]Using ByRef and ByVal

我對編程很新,我被告知我應該使用ByRef和ByVal傳遞內容,但是當我這樣做時,我得到一個錯誤說:

Error   3   Method 'Private Sub Activate_Click(ByRef intIDToChange As Integer, sender As Object, e As System.EventArgs)' 
cannot handle event 'Public Event Click(sender As Object, e As System.EventArgs)' because they do not have a compatible signature.  
F:\Dropbox\Gooby Backup\School Work\Computing\Unit 4\Room Booking Client\WindowsApplication1\ActivateDeactivate\Activate Deactivate.vb  32  129 WindowsApplication1

我開始使用以下內容:

Private Sub Activate_Click(ByRef intIDToChange As Integer, sender As System.Object, e As System.EventArgs) Handles Activate.Click

您無法使用您的方法處理Activate.Click ,因為您有額外的Integer參數與Event簽名不兼容。

活動簽名

Click(sender As Object, e As System.EventArgs)

你的方法

Activate_Click(ByRef intIDToChange As Integer, sender As System.Object, e As System.EventArgs)

您必須將方法定義為

Private Sub Activate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Activate.Click

因為按鈕單擊事件只需要兩個參數。

如果要使用變量intIDToChangeintIDToChange其作為類級別變量提供

private intIDToChange as Integer並在Activate_Click更新它。

這聽起來就像你在那里聲明的事件處理程序(Activate_Click)與ActivateClick的事件定義不匹配。

嘗試更改為:

Private Sub Activate_Click(ByVal intIDToChange As Integer, ....) Handles Activate.Click

ByVal通過參數發送變量的值,而ByRef發送變量(意味着子程序中的更改會影響調用例程變量)。

更詳細的答案在這里: http//social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/07b9d3b9-5658-49ed-9218-005564e8209e/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM