如何传递选定的行以在 C# 中以另一种形式绘制图形

how to pass selected row to draw a graph in another form in C#

我想按照以下步骤在 C# 中使用 Visual studio:

我阅读了 .csv 文件,但我无法通过选定的 2 行来绘制图表 form.cs.please 为 me.if 提供帮助 你可以提供任何代码示例,这是一个很大的进步对于 me.thank you.I 编码如下,我想通过在 C# 中使用 visual studio 传递选定的列值并以另一种形式绘制图形。 我的 .csv 文件如下所示: 日期、周期、计划、步骤、AvT1、St1、TargetE1、AvE1、AvI1 7/2/2017,11:19,0,1,25.978,State1,0,-0.2248319,0.0066
7/2/2017 ,11:19,0,1,25.978,State1,0,-0.2264814,0.0088 7/2/2017,11:19,0,2,25.978,State1,0,-0.2322548,0.0088
7/2/2017 ,11:19,0,2,25.978,State1,0,-0.2583174,0.0088

(以AvE1为x轴,以AvI1为y轴)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace GraphCsvInput
{

    public partial class Form1 : Form
    {
        DataGridView my_gridview = new DataGridView();
        DataTable my_datatable = new DataTable();

        //private Form2 frm2;
        public Form1()
        {
            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.Size = new Size(750,500);
            my_gridview.Size = new Size(600,400);
            my_gridview.Location=new Point(5,5);

            string[] raw_txt = System.IO.File.ReadAllLines("C://Users//SampleGraphFile_CSV.csv");
            string []data_col = null;
            int x = 0;
            foreach(string text_line in raw_txt)
            {

                data_col = text_line.Split(',');
                if(x==0)
                {for(int i=0;i<=data_col.Count()-1;i++)
                {
                    my_datatable.Columns.Add(data_col[i]);
                }

                    x++;
                }
                else
                {

                    my_datatable.Rows.Add(data_col);

                }
              // MessageBox.Show(data_col[6]);
            }
            my_gridview.DataSource = my_datatable;
            this.Controls.Add(my_gridview);


        }

    }

    }

试试这个...

创建一个 class 来保存值,例如...

public class GraphsData
{
    public double XAxis { get; set; }
    public double YAxis { get; set; }
}

然后调用下面的方法将产生下面粘贴的结果。

public static void CreatGraph()
    {
        var raw_txt = System.IO.File.ReadAllLines(@"D:\Projects\GraphData.csv");

        var v2 = from p in raw_txt.Skip(1)
                 select new GraphsData
                 {
                     XAxis = double.Parse((p.Split(','))[7]),
                     YAxis = double.Parse((p.Split(','))[8])
                 };


        foreach (var item in v2)
        {
            Console.WriteLine(item.XAxis + " | " + item.YAxis);    
        }

    }

这将产生以下输出

-0.2248319 | 0.0066
-0.2264814 | 0.0088
-0.2322548 | 0.0088
-0.2583174 | 0.0088

IMP

您的 CSV 格式不正确。在最后一行,注意 2 个逗号,这可能会产生错误的结果。

更新以创建图表

 public void CreatGraph()
    {

        var raw_txt = System.IO.File.ReadAllLines(@"D:\GraphData.csv");
        System.Data.DataTable dt = new System.Data.DataTable();

        dt.Columns.Add("x_axis");
        dt.Columns.Add("y_axis");

        DataTable myData = raw_txt.Skip(1)
                  .Select(x =>
                  {
                      var row = dt.NewRow();
                      row.SetField<string>("x_axis", x.Split(',')[7]);
                      row.SetField<string>("y_axis", x.Split(',')[8]);
                      return row;
                  }).CopyToDataTable();

        chart1.Series.Add("test");
        chart1.Series["test"].XValueMember = "x_axis";
        chart1.Series["test"].YValueMembers = "y_axis";
        chart1.DataSource = myData;
        chart1.DataBind();
    }

在窗体上插入图形控件(我的控件名称是"chart1")。然后点击一个按钮调用这个函数。