该名称在当前上下文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();
}
}
}
您在(相当长的)button1_Click
方法中将Column1
声明为局部变量。如果你想让它成为对象状态的一部分,这将使它在button2_Click
中可用,你应该将它声明为实例变量。
你可能想考虑一下如果按钮2在按钮1之前被点击会发生什么。