首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ByRef和ByVal

使用ByRef和ByVal
EN

Stack Overflow用户
提问于 2013-03-26 19:27:41
回答 3查看 794关注 0票数 0

我是编程新手,有人告诉我应该使用ByRef和ByVal传递东西,但当我这样做时,我收到一个错误,说:

代码语言:javascript
复制
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

我的潜水艇是这样开始的:

代码语言:javascript
复制
Private Sub Activate_Click(ByRef intIDToChange As Integer, sender As System.Object, e As System.EventArgs) Handles Activate.Click
EN

回答 3

Stack Overflow用户

发布于 2013-03-26 19:29:02

你不能用你的方法处理Activate.Click,因为你有额外的Integer参数,它与事件签名不兼容。

事件签名

代码语言:javascript
复制
Click(sender As Object, e As System.EventArgs)

你的方法

代码语言:javascript
复制
Activate_Click(ByRef intIDToChange As Integer, sender As System.Object, e As System.EventArgs)
票数 2
EN

Stack Overflow用户

发布于 2013-03-26 19:29:26

您必须将您的方法定义为

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

因为按钮单击事件只有两个参数。

如果要使用变量intIDToChange,请将其作为类级别变量提供,如下所示

private intIDToChange as Integer并在Activate_Click中更新它。

票数 0
EN

Stack Overflow用户

发布于 2013-03-26 19:32:38

听起来您在那里声明的事件处理程序(Activate_Click)与ActivateClick的事件定义不匹配。

尝试更改为:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15635892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档