Использование 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
3 ответа
Вы не можете справиться 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)
Вы должны определить свой метод как
Private Sub Activate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Activate.Click
потому что событие нажатия кнопки принимает только два аргумента.
Если вы хотите использовать переменную intIDToChange
, предоставьте это как переменную уровня класса, такую как
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/