【问题标题】:VB WPF to C# WPFVB WPF 到 C# WPF
【发布时间】:2016-04-22 19:17:51
【问题描述】:

我正在尝试从使用 VB WPF 转移到 C# WPF,由于我拥有的代码量,到目前为止我尝试的是使用在线转换器。问题是我在理解一些出现的错误时遇到了一些麻烦,作为 C# 的初学者,我有点迷茫。

下面的代码是我目前与标准 VB WPF 一起使用的代码,并且工作得非常好,并且是 c# 转换器将其更改为的副本。 (注意,我在 VB 和 C# 中都添加了 Bing Maps WPF 参考)

Private Sub Aberdeen() Handles BTNCounty.Click
    If TXTCounty.Text = "Aberdeen" Then

        Dim CountyLocation(2) As Microsoft.Maps.MapControl.WPF.Location

        CountyLocation(0) = New Microsoft.Maps.MapControl.WPF.Location(57.143652, -2.1056584)
        CountyLocation(1) = New Microsoft.Maps.MapControl.WPF.Location(57.143652, -2.1056584)
        CountyLocation(2) = New Microsoft.Maps.MapControl.WPF.Location(57.124838, -2.0991633)


Dim names = New String() {"Aberdeen Central",   "Aberdeen Lochnagar", "Aberdeen Kincorth"}

 For index = 0 To CountyLocation.Length - 1
            Dim Pin = New Microsoft.Maps.MapControl.WPF.Pushpin()

            Dim CoordinateTip = New ToolTip()
            CoordinateTip.Content = names(index)

            Pin.Location = CountyLocation(index)
            Pin.ToolTip = CoordinateTip
            BingMap.Children.Add(Pin)



        Next


    End If
End Sub

下面是代码转换成c#的例子

private void Aberdeen()
{

if (TXTCounty.Text == "Aberdeen") {
    Microsoft.Maps.MapControl.WPF.Location[] CountyLocation = new Microsoft.Maps.MapControl.WPF.Location[3];

    CountyLocation(0) = new Microsoft.Maps.MapControl.WPF.Location(57.143652, -2.1056584);
    CountyLocation(1) = new Microsoft.Maps.MapControl.WPF.Location(57.143652, -2.1056584);
    CountyLocation(2) = new Microsoft.Maps.MapControl.WPF.Location(57.124838, -2.0991633);


    dynamic names = new string[] {
        "Aberdeen Central",
        "Aberdeen Lochnagar",
        "\tAberdeen Kincorth"
    };

    for (index = 0; index <= CountyLocation.Length - 1; index++) {
        dynamic Pin = new Microsoft.Maps.MapControl.WPF.Pushpin();

        dynamic CoordinateTip = new ToolTip();
        CoordinateTip.Content = names(index);

        Pin.Location = CountyLocation(index);
        Pin.ToolTip = CoordinateTip;
        BingMap.Children.Add(Pin);



    }


}
}

我收到 3 个错误,想知道您能否告诉我它们的含义以及如何解决问题?

  1. CountyLocation 是一个变量,但用作方法?

2 当前上下文中不存在名称索引?

3 System.Windows.FrameworkElement.ToolTip 是一个属性,但用作类型?

任何帮助都将不胜感激,因为这对我来说非常陌生。

【问题讨论】:

  • 您的 VB.net 代码是一个表单项目。将 C# 转换为控制台应用程序。错误 1 ​​是由于表单上的文本框在控制台应用程序中不存在。

标签: c# wpf vb.net xaml converter


【解决方案1】:

请在线查看答案。 主要问题是转换器已将您的所有类型推断调用 (Dim variable = ...) 转换为动态,这是不正确的。您应该使用var 进行类型推断。

private void Aberdeen()
{

    if (TXTCounty.Text == "Aberdeen") {
        Microsoft.Maps.MapControl.WPF.Location[] CountyLocation = new Microsoft.Maps.MapControl.WPF.Location[3];

        // Error 1: Setting array variables is done using square brackets, otherwise it's considered a method invocation
        CountyLocation[0] = new Microsoft.Maps.MapControl.WPF.Location(57.143652, -2.1056584);
        CountyLocation[1] = new Microsoft.Maps.MapControl.WPF.Location(57.143652, -2.1056584);
        CountyLocation[2] = new Microsoft.Maps.MapControl.WPF.Location(57.124838, -2.0991633);

        // extra: you don't need dynamic here, just var will do
        var names = new string[] {
            "Aberdeen Central",
            "Aberdeen Lochnagar",
            "\tAberdeen Kincorth"
        };

        // Error 2: you need to declare the index variable (added var)
        for (var index = 0; index <= CountyLocation.Length - 1; index++) {
            // Error 3: don't need dynamic here
            var Pin = new Microsoft.Maps.MapControl.WPF.Pushpin();

            // don't need dynamic here 
            var CoordinateTip = new ToolTip();
            // Same as error 1: Array access is done with square brackets
            CoordinateTip.Content = names[index];

            // Same as error 1: Array access is done with square brackets    
            Pin.Location = CountyLocation[index];
            Pin.ToolTip = CoordinateTip;
            BingMap.Children.Add(Pin);
        }   
    }
}

【讨论】:

  • 这两个数组访问器也需要修复(例如names(index)应该是names[index])。
  • 很好,添加了它
猜你喜欢
  • 1970-01-01
  • 2019-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多