2017-02-17 27 views
-1

я хочу ниже шагов при помощи Visual Studio в C#:как передать выбранную строку, чтобы нарисовать график в другой форме в C#

Я прочитал файл .csv, но я не могу передать выбранные 2 строк в нарисуйте график в form.cs.please, дайте справку для me.if, вы можете дать какой-либо пример кода, это отличный шаг для меня. Спасибо. Я закодировал его ниже следующим образом: я хочу передать это выбранное значение столбца и нарисовать график в другой форме, используя визуальную студию в C#. Мой файл .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 оси х, как и AvI1 как у оси)

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); 


     } 

    } 

    } 
+0

Не могли бы вы объяснить, чего вы хотите достичь? Как выглядит ваш csv и что вы хотите сделать из него? – A3006

+0

Большое спасибо за ответ на мой вопрос. Я новичок в языке C#. У меня есть проблема с вызовом между классом и формами. Я хочу сделать следующие шаги: 1. Прочтите файл .csv. 2. Сохраните интересующие параметры в модели класса. 3. Используйте генерацию графа в классе Manager и введите методы рисования графика. 4. Выше методы должны читать объект класса и рисовать Graph.I хочу прочитать CSV-файл и получить выбранную строку и передать эти данные, чтобы нарисовать график в соответствии с осью X и y. Спасибо за сотрудничество по моему вопросу , – SNP

+0

Базовая точка остается той же ... Как выглядит ваш csv? Вы можете обновить вопрос и вставить образцы строк. – A3006

ответ

0

Попробуйте это ...

Создать класс для хранения ценностей, как ...

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 запятые, что может привести к неправильному результату.

ОБНОВЛЕНИЕ ДЛЯ СОЗДАНИЯ GRAPH

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"). Затем по щелчку кнопки вызывается эта функция.

+0

Большое спасибо за вашу помощь. Sir.yes sir, что последние две колонки - это моя ошибка ввода. Спасибо, sir.may. Я знаю, как передать это значение в приложение формы Windows, чтобы нарисовать график. Если вы можете это сделать большую помощь я понимаю это. Я - новый ученик этого языка. Мне нравится учиться, поэтому может дать любую ссылку для изучения этой практики ключевых слов. – SNP

+0

Большое спасибо за поддержку. Скажите, как передать это значение форме формы приложения Windows, чтобы нарисовать график. Я являюсь новым учеником этого языка. Так вы можете объяснить мне большую помощь. – SNP

+0

Я пробовал, но не смог найти подходящий способ рисовать график в форме. – SNP