【问题标题】:I need help for translate C# to Vb (with EventHandlers)我需要帮助将 C# 转换为 Vb(使用 EventHandlers)
【发布时间】:2015-09-16 15:56:48
【问题描述】:

我有我的代码:

client.NotifyClientEnterView += (source, notification) => Console.WriteLine("ClientEnterView {0}: {1}", notification.Clid, notification.ClientNickname);

我想在 VB.NET 中翻译它 (当我输入它时它没有与翻译一起工作)

我尝试了 AddHandler 方法,但它不起作用(因为它是一个事件处理程序,而不是一个事件,就像这样:Addhandler client.NotifyClientEnterView, adressof <mysub>

当客户进入频道时,我需要翻译它以执行子程序(在团队中)

我的图书馆:https://github.com/Spksh/TentacleSoftware.TeamSpeakQuery

注意:client.NotifyClientEnterView 作为 EVENTHANDLER,而不是 EVENT。

希望您能理解我的问题,并感谢您的帮助。

【问题讨论】:

  • 你能解释一下它目前的作用吗?此外,我们不翻译代码我们帮助解决实际的编程问题。有很多供应商可以做到这一点。如果它不起作用,请说明您尝试过的方法以及您遇到的问题。
  • 我尝试了 AddHandler 方法,但它不起作用(因为它是一个事件处理程序,而不是一个事件,像这样:Addhandler client.NotifyClientEnterView, adressof
  • 我建议你添加这个问题。您尝试过的代码。您需要达到的目标。在 VB.NET 中尝试一下并发布错误,即使它是编译错误。开始codeproject.com/Articles/5041/…
  • 感谢您的链接,但我已经知道 VB 中的事件是什么。 (我写了更多信息,刷新页面)

标签: c# .net vb.net events eventhandler


【解决方案1】:

'AddressOf' 不用于将 lambda 连接到事件的情况。 因此,分两步解决问题: 1.使用'AddHandler'(你已经知道了) 2. 使用以下模式替换将 C# lambda 替换为 VB lambda:'(..) => ..code..' -> 'Sub(..) ..code..'。 例如,

AddHandler client.NotifyClientEnterView, Sub(source, notification) Console.WriteLine("ClientEnterView {0}: {1}", notification.Clid, notification.ClientNickname)

【讨论】:

  • 我添加了转换 - 但请尝试了解该过程。
  • @SimonEtlafamille:表达式 lambda 不需要“End Sub”。
  • @SimonEtlafamille:我在您的代码中没有看到“NotifyTextMessage”。
  • 有人解决我的问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多