【问题标题】:Translation Dispatcher.Invoke delegate from C# to VB.NET [closed]将 Dispatcher.Invoke 委托从 C# 转换为 VB.NET [关闭]
【发布时间】:2014-03-27 15:43:22
【问题描述】:

您好想知道是否有人可以解释将以下代码转换为 vb.net。任何帮助将不胜感激。

void ShowNewPage()
{
    Dispatcher.Invoke((Action)delegate 
    {
        if (contentPresenter.Content != null)
        {
            UserControl oldPage = contentPresenter.Content as UserControl;

            if (oldPage != null)
            {
                oldPage.Loaded -= newPage_Loaded;

                UnloadPage(oldPage);
            }
        }
        else
        {
            ShowNextPage();
        }

    });
}

【问题讨论】:

  • 您可以尝试在 google 中搜索您的标题
  • 谢谢,但我确实尝试了翻译网站并得到了相同的结果,但我收到一条错误消息,说“单行语句 lambdas 必须只包含一个语句”
  • 所以问一个关于那个错误的问题...展示你的代码,展示你尝试过的内容并解释错误。这样你会得到更好的答案。不要只要求人们“为我做这件事”。
  • 他为什么不让人们为他做这件事呢?他可能会被否决,人们可能会抱怨,但是看看下面,两个人已经为他提供了翻译。祝您好运,期待拥有 1 个代表的用户关心被否决!防止这种情况发生的唯一方法是对提供答案的人投反对票....
  • @WeylandYutani 那你就成功了;)

标签: c# vb.net lambda delegates code-translation


【解决方案1】:

在谷歌上快速搜索:translate C# to vb.net 会让你上路;)

但是看在答案的份上,给你!

更新:

Private Sub ShowNewPage()
    Dispatcher.Invoke(DirectCast(
                          Sub()
                              If contentPresenter.Content IsNot Nothing Then
                                  Dim oldPage As UserControl = TryCast(contentPresenter.Content, UserControl)

                                  If oldPage IsNot Nothing Then
                                      oldPage.Loaded -= newPage_Loaded
                                      UnloadPage(oldPage)
                                  End If
                              Else
                                  ShowNextPage()
                              End If
                          End Sub, 
                          Action))
End Sub

【讨论】:

  • 哈哈,我们肯定用的是同一个翻译器;)
  • 其实我用了Telerik's Converter,但是这个sn-p出来的结果是一样的,猜想写这个特定块的方法并不多;)
  • @EvanL 有趣,也许那个网络应用正在使用 Telerik 后端:P
  • 谢谢,但我确实尝试了翻译网站并得到了相同的结果,但我收到一条错误消息,提示“单行语句 lambdas 必须只包含一个语句”
【解决方案2】:

在线翻译并不总是有效。他们特别不擅长 linq 和 lambdas。

这是我的翻译尝试:

Private Sub ShowNewPage()
    Dispatcher.Invoke(Sub() ShowNewPageCallback())
End Sub

Private Sub ShowNewPageCallback()
    If contentPresenter.Content IsNot Nothing Then
        Dim oldPage As UserControl = TryCast(contentPresenter.Content, UserControl)

        If oldPage IsNot Nothing Then
            RemoveHandler oldPage.Loaded, AddressOf newPage_Loaded
            UnloadPage(oldPage)
        End If
    Else
        ShowNextPage()
    End If
End Sub

如果您决定在以后发布此类问题以供将来参考,您应该提及您已尝试翻译它并显示您的翻译。大多数人都喜欢看到您自己为工作付出了一些努力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多