2013-05-12 112 views
0

我试图将数据与图表绑定来显示它。但是,当我试图链接其中一个列与图表的轴之一时,它出现“名称Column1在当前上下文中不存在”错误。有人知道我做错了什么,如何解决它?该名称在当前上下文中不存在c#

这里是我的代码:

namespace bike 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

    } 



    private void button1_Click(object sender, EventArgs e) 
    { 

     var col1 = new List<string>(); 
     var col2 = new List<string>(); 
     var col3 = new List<string>(); 
     var col4 = new List<string>(); 

     var Column1 = col1.Select<string, int>(q => Convert.ToInt32(q)); 
     var Column2 = col2.Select<string, int>(q => Convert.ToInt32(q)); 
     var Column3 = col3.Select<string, int>(q => Convert.ToInt32(q)); 
     var Column4 = col4.Select<string, int>(q => Convert.ToInt32(q)); 



     dataGridView1.Columns.Add("col1", "Heart Rate"); 
     dataGridView1.Columns.Add("col2", "Speed"); 
     dataGridView1.Columns.Add("col3", "Power"); 
     dataGridView1.Columns.Add("col4", "Altitude"); 




     DialogResult result = openFileDialog1.ShowDialog(); 
     if (result == DialogResult.OK) 
     { 
      using (StreamReader sr = new StreamReader(openFileDialog1.FileName)) 
      { 

       int row = 0; 
       string line; 

       bool isInHRData = false; 

       while ((line = sr.ReadLine()) !=null) 
       { 
        if (!isInHRData) 
        { 
         if (line != "[HRData]") 
          continue; 
         isInHRData = true; 
         continue; 
        } 

        else if (line.StartsWith("[") && line.EndsWith("[")) 
         break; 

        string[] columns = line.Split('\t'); 
        if (columns.Length > 0) 
         col1.Add(columns[0]); 
        if (columns.Length > 1) 
         col2.Add(columns[1]); 
        if (columns.Length > 2) 
         col3.Add(columns[2]); 
        if (columns.Length > 3) 
         col4.Add(columns[3]);   

        /*col1.Add(columns[0]); 
        col2.Add(columns[1]); 
        col3.Add(columns[2]); 
        col4.Add(columns[3]); 
        */ 

        dataGridView1.Rows.Add(); 
        for (int i = 0; i < columns.Length; i++) 
        { 
         dataGridView1[i, row].Value = columns[i]; 
        } 
        row++; 
       } 

       int maxSpeed = Column2.Max(); 
       maxSpeed = maxSpeed/10; 
       string MaxSpeed = Convert.ToString(maxSpeed); 
       textBox1.Text = MaxSpeed; 

       double aveSpeed = Column2.Average(); 
       aveSpeed = aveSpeed/10; 
       aveSpeed = Math.Round(aveSpeed, 0); 
       string AveSpeed = Convert.ToString(aveSpeed); 
       textBox2.Text = AveSpeed; 

       double aveHeart = Column1.Average(); 
       aveHeart = Math.Round(aveHeart, 0); 
       string AveHeart = Convert.ToString(aveHeart); 
       textBox3.Text = AveHeart; 

       int maxHeart = Column1.Max(); 
       string MaxHeart = Convert.ToString(maxHeart); 
       textBox4.Text = MaxHeart; 

       int minHeart = Column1.Min(); 
       string MinHeart = Convert.ToString(minHeart); 
       textBox5.Text = MinHeart; 

       double avePower = Column3.Average(); 
       avePower = Math.Round(avePower, 0); 
       string AvePower = Convert.ToString(avePower); 
       textBox6.Text = AvePower; 

       int maxPower = Column3.Max(); 
       string MaxPower = Convert.ToString(maxPower); 
       textBox7.Text = MaxPower; 

       double aveAltitude = Column4.Average(); 
       aveAltitude = Math.Round(aveAltitude, 0); 
       string AveAltitude = Convert.ToString(aveAltitude); 
       textBox8.Text = AveAltitude; 

       int maxAltitude = Column4.Max(); 
       string MaxAltitude = Convert.ToString(maxAltitude); 
       textBox9.Text = MaxAltitude; 

      } 
     } 

    } 


    private void button2_Click(object sender, EventArgs e) 
    { 

     chart1.DataSource = dataGridView1; 
     chart1.Series["Series1"].XValueMember = Column1; 
     chart1.Series["Series1"].YValueMembers = "test"; 
     chart1.DataBind(); 
    } 

} 

}

回答

2

你宣布你的(比较长)button1_Click方法中Column1作为局部变量。如果您希望它成为对象状态的一部分,这会使其在button2_Click中可用,您应该声明它为实例变量

您可能想要考虑如果在按钮1之前单击了按钮2,会发生什么情况。

+0

所以你的意思是在public_Form1里面的button1_Click之外声明Column1? – user2047427 2013-05-12 16:34:31

+0

我想我可以捕捉到异常,如果button2是第一次点击,是否正确? – user2047427 2013-05-12 16:35:38

+0

@ user2047427:不,在'class Form1'里面。没有'public_Form1'这样的东西。将其声明为一个字段,而不是本地字段。并且不要捕捉异常 - 您可以检查该值是否为空。或者,您也可以只在按钮1被点击并且字段设置正确时才启用按钮2。 – 2013-05-12 16:50:56

相关问题