该名称在当前上下文c#中不存在

本文关键字:上下文 不存在 | 更新日期: 2023-09-27 18:13:09

我试图将数据与图表绑定以显示它。然而,当我试图将其中一列与图表的一个轴联系起来时,它会出现"名称Column1不存在于当前上下文中"的错误。有人知道我做错了什么以及如何解决吗?

下面是我的代码:
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();
    }
}

}

该名称在当前上下文c#中不存在

您在(相当长的)button1_Click方法中将Column1声明为局部变量。如果你想让它成为对象状态的一部分,这将使它在button2_Click中可用,你应该将它声明为实例变量

你可能想考虑一下如果按钮2在按钮1之前被点击会发生什么。