.NET FrameworkのChart Controlsにデータバインディングしてみることにした.
なかなか難しかった.
と思ったら,データの列だけであれば,次のようにすればよいらしい.
DataTableを使用すればいちいちクラスを作らなくてもデータの列を保管できる.
そして,これをそのままバインドすればよい.
using System;
using System.Data;
using System.Windows.Forms;
namespace chartTEST
{
public partial class Form1 : Form
{
private DataTable table = new DataTable("Table");
private Timer timer = new Timer();
private Int64 count = 0;
public Form1()
{
InitializeComponent();
// カラム名の追加
table.Columns.Add("DateTime", Type.GetType("System.DateTime"));
table.Columns.Add("Value", Type.GetType("System.Double"));
for (int i = 0; i < 1; i++)
{
DataRow row = table.NewRow();
row[0] = DateTime.Now;
row[1] = 0.001;
table.Rows.Add(row);
}
chart1.Series[0].XValueMember = "DateTime";
chart1.Series[0].YValueMembers = "Value";
this.chart1.DataSource = table;
this.chart1.DataBind();
timer.Interval = 1000;
timer.Tick += timer1_Tick;
timer.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
count++;
DataRow row = table.NewRow();
row[0] = DateTime.Now;
row[1] = 1.0 * Math.Sin(count * 0.1) + 0.001;
table.Rows.Add(row);
this.chart1.DataBind();
}
}
}

