C# MSDN图表实时更改点值?
我想使用MSDN图表来表示从telnet应用程序获取的实时数据。出于测试目的,我添加了一个按钮来手动更改图表。我手工制作了这个图表,它在X轴上有0到5个点,在X轴上有不同的值。这个系列以默认的“Series1”命名 我尝试了以下方法: 图表1.系列[“系列1”]点.元素AT(0).SetValueY(40)//什么也没发生 图表1.系列[“系列1”]点.元素AT(1).设定值XY(1,20)//什么也没发生 图1.系列[“系列1”]。点[0]。设定值(40)//什么也没发生 图表1.系列[“系列1”].点.元素AT(1).Y值.设定值(10,0)//什么也没发生 图表1.系列[“系列1”]点.清除()//像应该的那样删除所有点 那么如何在运行时更改数据点条目呢 -编辑- 如果我使用C# MSDN图表实时更改点值?,c#,winforms,charts,msdn,C#,Winforms,Charts,Msdn,我想使用MSDN图表来表示从telnet应用程序获取的实时数据。出于测试目的,我添加了一个按钮来手动更改图表。我手工制作了这个图表,它在X轴上有0到5个点,在X轴上有不同的值。这个系列以默认的“Series1”命名 我尝试了以下方法: 图表1.系列[“系列1”]点.元素AT(0).SetValueY(40)//什么也没发生 图表1.系列[“系列1”]点.元素AT(1).设定值XY(1,20)//什么也没发生 图1.系列[“系列1”]。点[0]。设定值(40)//什么也没发生 图表1.系列[“系列
chart1.Series[“Series1”].Points.ElementAt(0).SetValueY(40)修改一个点编码>并在此之后添加一个点,带有图表1.Series[“Series1”].Points.AddXY(1,40)代码>修改的点会捕捉到其修改的位置。结论是修改确实会更改点Y值,但图形不会刷新。函数AddXY()似乎是自动刷新的。我似乎找不到手动调用Refresh()的方法。在更改值后调用chart1.Refresh()
;它将强制重新绘制图表,拾取新值。我这样做:
public static void Refresh(this Chart chart) // update changed data
{
chart.Series[0].Points.AddXY(1, 1);
chart.Update();
chart.Series[0].Points.RemoveAt(chart.Series[0].Points.Count-1);
}
图1.刷新() 我刚刚发现SetValueY()不会更新Y轴上的最大间隔。因此,如果当前最大值为0,它将不会显示任何高于0的值。DataTable dtChartDataSource=您这边的输入
foreach (DataColumn dc in dtChartDataSource.Columns)
{
//a series to the chart
if (chart.Series.FindByName(dc.ColumnName) == null)
{
series = dc.ColumnName;
chart.Series.Add(series);
chart.Series[series].ChartType = SeriesChartType.Column;
foreach (DataRow dr in dtChartDataSource.Rows)
{
double dataPoint = 0;
double.TryParse(dr[dc.ColumnName].ToString(), out dataPoint);
Yourchart.Series[seriesName].Points.AddXY("customStringsOnAxis", dataPoints);
}
}
}
它会将x轴数据和Y轴值添加到柱状图中
希望它有帮助您尝试过.Update()吗?@MrPaulch-Nope.Update没有帮助。它似乎一直是.Refresh()那么/我如何更改该值?这是我试过的其中一种吗?任何一种都可以<代码>图表1.Series[“Series1”].Points.ElementAt(1).YValues=new{10,0}代码>也应该起作用。您能看到调试器中更新的值吗?chart1.refresh不存在。这很奇怪,因为它被列为此处的成员:Refresh()
确实存在。你在使用WinForms吗?当你在调试器中单步执行代码时,你看到值被更新了吗?我在寻找同样的东西,刷新方法实际上存在,但你必须键入它,因为自动完成没有显示它。chart1.ResetAutoValues()代码>将修复它。