Jul*_*les 2 .net c# vb.net wndproc
预计到达时间:我使用Visual Studio 2008 Express Edition。
如果我重写WndProc并以某种方式搞乱了,我通常会通过注释掉代码直到它再次起作用来回溯。
WndProc的奇怪之处在于您可以将其简化为:
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc((m))
End Sub
Run Code Online (Sandbox Code Playgroud)
仍然会引发错误。
我必须删除代码并重新输入以重置错误。
还有其他人经历过吗?
预计到达时间:
克里斯·哈斯(Chris Haas)在下面回答。
我还没有意识到,但是只有当我使用了反射器的代码时,才会出现此问题。Reflector错误地转换为vb.net,并在对WndProc base的调用中插入了多余的括号。
将参数包装在括号中时,您将覆盖该ByRef调用,而不是调用它ByVal。请参见参数未被过程调用修改-基础变量
只需将代码更改为:
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
End Sub
Run Code Online (Sandbox Code Playgroud)