C#和C之间的事件处理差异VB.NET

时间:2010-11-18 20:48:09

标签: c# vb.net timer event-handling

NET大师......你怎么把这个大块转换成VB?

this.timer = new System.Timers.Timer(100);
this.timer.Elapsed+=new System.Timers.ElapsedEventHandler(ManageThreads);
this.timer.Start();

当我使用在线转换器(Telerik)时,中间线会像这样转换:

Me.timer.Elapsed += New System.Timers.ElapsedEventHandler(ManageThreads)

有2个错误: 1-“Public eventElapsed是一个事件,不能直接调用。使用raiseEvent 2-代表需要Adess Of表达。我只是添加“地址”吗?

任何线索都热烈欢迎。

2 个答案:

答案 0 :(得分:6)

添加事件处理程序的语法在C#和VB.NET之间是非常不同的,因为您发现Telerik不能很好地处理这种差异。

C#添加处理程序语法:

<object>.<event> += <event_handler_function>

VB添加处理程序语法:

add handler <object>.<event>, addressof <event_handler_function>

VB事件处理可能会遇到另一个问题:您要添加事件处理程序的对象必须在类范围内声明。例如。您无法将处理程序添加到本地创建的对象(在方法中)并将其返回或添加到集合中。所以当你需要动态地做事时,你基本上有一个类级临时变量。

祝你好运。

答案 1 :(得分:3)

奇怪的东西会返回这个转换器

尝试: AddHandler Me.timer.Elapsed,AddressOf ManageThreads

在.NET中动态添加和删除事件处理程序 http://www.thescarms.com/dotnet/EventHandler.aspx