2013-05-12 114 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

相關問題