2013-03-26 52 views
0

我是相當新的編程,我被告知,我應該通過使用的ByRef和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 

回答

2

你不能用你的方法處理Activate.Click,因爲你有更多的Integer參數,即未在事件簽名不兼容。

事件簽名

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

你的方法

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

非常感謝:) – 2013-03-26 11:32:19

0

你必須定義你的方法

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

因爲... e按鈕點擊事件只有兩個參數。

如果你想使用變量intIDToChange,提供像

private intIDToChange as Integer一類級別的變量,並在Activate_Click更新。

0

聽起來像您在那裏聲明的事件處理程序(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/

+0

它會更好聲明變量的形式負載子裏面,然後從那裏引用它們? – 2013-03-26 11:39:15

+0

最好在單個方法外部聲明並通過Me.FieldName路徑在方法內部引用它們。如果你在應用程序中或在定義這個特定事件的類中使用這些值,可以考慮將它們包裝在適當的上下文中'輸入'過早,所以不得不編輯評論!) – Rex 2013-03-26 12:05:07

+0

...也只是有一杯咖啡,發現我的回答是不正確的Re:事件鉤定義:@MarcinJuraszek答案是 – Rex 2013-03-26 12:43:01