将具有预定义结构的List作为参数传递给不同的Form

时间:2017-07-18 17:05:45

标签: c# winforms parameters

我在thisthis等几个链接中看到了这个问题,但我相信我的情况有点不同。

我想传递给第二种形式的列表,该列表将上传到数据库。

列表的结构是:

    public struct GraphData
    {
        public double Temp1;
        public double Temp2;
        public DateTime Date;
        public string Type;
    }

列表填充如下:

    for (int i = startIndex; i <= endIndex; i++)
    {
        GraphData update = _listData[i];
        update.Type = type;
        _listData[i] = update;
        chart1.Series[0].Points[i].Color = color;

        // add to a list so we can save on the DB if the user wants
        PointsAndCycles.Add(new GraphData()
        {
            Temp1 = update.Temp1,
            Temp2 = update.Temp2,
            Date = update.Date,
            Type = update.Type
            // CAN I ALSO HAVE THE ID?
        });

    }

我正在尝试传递这样的列表:

public void button1_Click(object sender, EventArgs e)
{
    Database.SavePointsAndCyclesListIntoDB(List<GraphData> PointsAndCycles) ;
}

但我收到错误: CS0305 C#使用泛型类型'List'需要1个类型参数,CS0119 C#是一个类型,在给定的上下文中无效。

额外信息......在第二种形式中,我将执行如下列表:

   public void SavePointsAndCyclesListIntoDB(List<GraphData> PointsAndCycles)
    {
        using (SqlConnection dbConnection = new SqlConnection(sqlConection))
        {
            try

任何人都可以帮助我吗?我从here

中接受了这个作为参数传递的想法

如果我尝试:

public void button1_Click(object sender, EventArgs e)
{
    Database.SavePointsAndCyclesListIntoDB(PointsAndCycles) ;
}

我收到错误:

 System.Collections.Generic.List<A_Dev_.Analysis.FormA_DataType.GraphData>' to 'System.Collections.Generic.List<A_Dev_.Database.ClassDatabase.GraphData>'

最后,我试图以这种方式公开名单:

public List<GraphData> PointsAndCycles = new List<GraphData>();

额外: 在ClassDatabase中,我还像这样定义了GraphData

public struct GraphData
{
    public double Temp1;
    public double Temp2;
    public DateTime Date;
    public string Type;
}

1 个答案:

答案 0 :(得分:0)

这有几个问题,第一个是函数调用的形式......

如果这是唯一的问题,你可以这样做

public void button1_Click(object sender, EventArgs e)
{
    Database.SavePointsAndCyclesListIntoDB(PointsAndCycles) ;
}

您在函数调用中声明了一个类型。

另一个问题是PointsAndCycles似乎不是当前范围的一部分,除非它包含在包含该函数的类中。您需要找到一种方法来访问事件处理程序中的List,可能通过esender,具体取决于您正在执行的操作。