【问题标题】:Sending parameters between wpf applications在 wpf 应用程序之间发送参数
【发布时间】:2014-10-07 01:45:05
【问题描述】:

我有 2 个 wpf 应用程序。 我需要将参数作为参数发送给其中一个,并在其中一个以更改参数,并在另一个 wpf 应用程序中使用变量的新值。

我的代码:

1 WPF:

Forms.CreatRadar creatRadarWPF = new Forms.CreatRadar(azimuthStart,AzimuthEnd,Long,Lat,numOfRadars,listRadars);
            creatRadarWPF.Show();

2 WPF:

public partial class CreatRadar : Window
{
    private double AzimuthStart;
    private double AzimuthEnd;
    private double Long;
    private double Lat;
    private int numOfRadars;
    private List<Radar> ListRadars;

    public CreatRadar(double AzimuthStart, double AzimuthEnd, double Long, double Lat, int numOfRadars, List<MapSample.Radar> ListRadars)
    {
        InitializeComponent();
    }

    private void CreatRadarBtn_Click(object sender, RoutedEventArgs e)
    {
        this.AzimuthStart = double.Parse(txt_AzimuthStart.Text.ToString());
        this.AzimuthEnd = double.Parse(txt_AzimuthEnd.Text.ToString());
        this.Long = double.Parse(txt_Long.Text.ToString());
        this.Lat = double.Parse(txt_Lat.Text.ToString());
        this.ListRadars = ListRadars;
        this.numOfRadars = numOfRadars;

        this.numOfRadars++;
        Radar RadarTemp = new Radar(numOfRadars, this.AzimuthStart, this.AzimuthEnd, this.Long, this.Lat, 1, 1);
        this.ListRadars.Add(RadarTemp);

        MapDrawManager.Instance.Draw(RadarTemp);
    }
}

错误: 可访问性不一致:参数类型“System.Collections.Generic.List”的可访问性低于方法“MapSample.Forms.CreatRadar(double,double,double,double,int,System.Collections.Generic.List)”

【问题讨论】:

  • 看起来问题出在 listRadars 参数上,留空看看会发生什么?

标签: c# wpf syntax-error


【解决方案1】:

您的类 MapSample.Radar 似乎不公开。这是必要的,因为它在公共函数 CreatRadar 中使用。

【讨论】:

  • 你确定你需要函数CreatRadar中的参数吗?它们不被使用。还是你剪辑了代码?
  • ...什么是 MapSample?命名空间还是(公共 :-))父类?
  • 公开课是公开的
  • 好吧,我成功了。但是现在我的列表有另一个问题。每次我创建对象列表,如果我不这样做:this.ListRadars = new List();它错误地认为对象为空。
  • 你永远不会分配 ListRadars。你有函数CreatRadar,它接受参数 ListRader 和其他参数,但你没有在这个函数中使用这些参数。我认为您尝试在 xxx_Click 函数中分配 ListRadars,但此函数将(空)ListRadars 分配给自身。此函数中没有称为 ListRadars 的局部变量和参数,因此 this.ListRadars 与 ListRadars 相同(没有this.)。
【解决方案2】:

MapSample.Radar 类是公共类还是内部类?如果是这样,请考虑更改此类的内部修饰符并确保它显示“public class MapSample.Radar”。如果您可以从其他 WPF 应用程序中使用它们,则必须根据需要将其他类型更改为 public。或者,您还可以通过在 AssemblyInfo 文件中设置 InternalsVisibleTo 属性,将程序集更改为其他 WPF 应用程序的朋友程序集。

这里有更多关于朋友程序集的信息以及如何对程序集进行强名称签名(请注意,在 Visual Studio 中,也可以设置程序集的签名,这样 sn 命令就不必从命令行运行): How to declare a friend assembly?

【讨论】:

  • 雷达类是公共的:公共类雷达:MapObject {
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多