Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';将此事件处理程序注册从C#转换为VB.net的正确方法是什么?_C#_Vb.net - Fatal编程技术网

什么';将此事件处理程序注册从C#转换为VB.net的正确方法是什么?

什么';将此事件处理程序注册从C#转换为VB.net的正确方法是什么?,c#,vb.net,C#,Vb.net,我试图将一些代码从C#移植到VB.net,但在使用简单的事件处理程序时遇到了问题 C#: 但是我的转换在C代码中缺少对KeyPressedEventArgs的任何引用,我不确定我是否做对了。任何帮助都将不胜感激。记住,事件是一个代表。要订阅事件,事件处理程序的签名必须与委托相同。只要你的方法有正确的签名,你就做对了。只需确保事件处理程序的EventArgs参数为KeyPressedEventArgs类型 C#: VB.net AddHandler hook.KeyPressed, Address

我试图将一些代码从C#移植到VB.net,但在使用简单的事件处理程序时遇到了问题

C#:


但是我的转换在C代码中缺少对KeyPressedEventArgs的任何引用,我不确定我是否做对了。任何帮助都将不胜感激。

记住,事件是一个代表。要订阅事件,事件处理程序的签名必须与委托相同。只要你的方法有正确的签名,你就做对了。只需确保事件处理程序的EventArgs参数为KeyPressedEventArgs类型

C#:

VB.net

AddHandler hook.KeyPressed, AddressOf hook_KeyPressed
VB.net中的处理程序:

AddHandler hook.KeyPressed, AddressOf hook_KeyPressed
Sub hook_KeyPressed(ByVal sender As Object, ByVal e As KeyPressedEventArgs)
    'code here
End Sub

Telerik有一个很好的C#到VD.NET的转换工具,我发现它很有用,希望你也这么做。首先重写C代码:
hook.KeyPressed+=hook\u KeyPressed现在很明显。@rontornambe我发现的所有代码转换器都无法正确转换事件处理程序,包括Telerik。用我文章中的C代码片段自己试试。使用VB.net的AddHandler并不麻烦。这正是我所拥有的,它似乎不正确,因为C代码注册事件处理程序时提到了KeyPressedEventArgs,而VB.net代码没有。我猜这在hook_键按下的参数中起作用了?是的,从技术上讲,在C#中,你也不需要事件参数。在您的示例中,使用新委托是旧方法。现在使用新语法完成:hook.KeyPressed+=hook\u KeyPressed;
hook.KeyPressed += hook_KeyPressed;
AddHandler hook.KeyPressed, AddressOf hook_KeyPressed
Sub hook_KeyPressed(ByVal sender As Object, ByVal e As KeyPressedEventArgs)
    'code here
End Sub