C# MSDN图表实时更改点值?

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.系列[“系列

我想使用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”]点.清除()//像应该的那样删除所有点

那么如何在运行时更改数据点条目呢

-编辑- 如果我使用
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()将修复它。