2016-09-04 4 views
0

私の現在のプロジェクトでは、データを生成するalgorythmがあります。このデータはLinechartで表示されますが、グラフは各ステップの後ではなく終了した時点でのみ更新されます。リアルタイムチャート更新

private void simulate(share[] shares) 
{ 
    int k = 0; 
    Random r = new Random(); //random values just for testing 
    while (k < 10)//10 steps (10 values for each share) 
    { 
     for (int i = 0; i < shares.Length; i++) 
     { 
      shares[i].value = r.Next(0, 10000);//random a new value 
      shares[i].history.Add(shares[i].value);//add the value to the value history 
     } 
     //now update the chart so that it first shows only one x point than two and so on 
     drawchart(shares); 
     k++; 
    } 
} 

private void drawchart(share[] shares) 
{ 
    cHshares.Series.Clear();//clear the chart 
    for (int i = 0; i < shares.Length; i++)//for each share 
    { 
     cHshares.Series.Add(shares[i].name);//add a new share to the chart 
     cHshares.Series[shares[i].name].ChartType = SeriesChartType.FastLine; 

     int j = 0; 
     //draw the lines with each value that exists for each share 
     foreach (double value in shares[i].history) 
     { 
      cHshares.Series[shares[i].name].Points.AddXY(j, value); 
      j++; 
     } 
    } 
} 

私はdrawchartのfunktionなぜそれがすべてのステップが終了した後、それが唯一の示すことであるすべてのステップを呼ぶので?

+0

多分、チャートをリフレッシュすると役立ちます。 – TaW

+0

私はrefresh()というメソッドはありません。そのようなドキュメンタリーが存在することは確かですが、requiret名前空間を追加した後でさえ、チャートにはリフレッシュの定義が含まれていないと言われています。 – Littellittel

+1

よくc#は大文字小文字を区別しますので、メソッドは 'cHshares.Refresh();'です!すべてのSeriesを 'drawchart'メソッドで削除していることは間違いないと思います。 – TaW

答えて

0

forループのようなループにコードを入れました

+0

新しい値を追加するコード(およびそれに関するエントリ)だけです。 whileループを削除すると、x-achisの値が1つしかないグラフが表示されます。 whileループは10個のx-achsis値を生成し、各x-achsis値の後にグラフを更新する必要がありますが、それは更新されません。 – Littellittel

+0

これは答えではなく、コメントです! – TaW

0

各描画の後、グラフを更新してください。すなわち

drawchart(shares); 
cHshares.Update(); 
k++; 

私はこれが役立つことを望みます。

関連する問題