2

ETA:我使用Visual Studio 2008 Express Edition。

如果我重写 WndProc 并以某种方式搞砸了,我通常会通过注释掉代码来回溯,直到它再次工作。

不过,WndProc 的奇怪之处在于您可以将其简化为:

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    MyBase.WndProc((m))
End Sub

它仍然抛出错误。

我必须删除代码并重新输入以重置错误。

还有其他人经历过吗?

预计到达时间:

克里斯哈斯在下面回答。

我没有意识到,但这个问题一定只有在我使用反射器的代码时才会发生。反射器错误地转换为 vb.net 并将额外的括号插入到对 WndProc 基础的调用中。

4

1 回答 1

5

当您将参数包装在括号中时,您将覆盖ByRef调用,而是调用它ByVal。请参阅过程调用未修改参数 - 基础变量

只需将代码更改为:

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    MyBase.WndProc(m)
End Sub
于 2010-04-21T16:29:46.183 回答