我有一个对象列表:
List<MyClass> MyList = new List<MyClass>();
MyClass包含实时更新的Properties Dtm和LastPrice
public class MyClass
{
int dtm;
double lastPrice = 0;
public int Dtm
{
get { return dtm; }
set { dtm = value; }
}
public double LastPrice
{
get { return lastPrice; }
set { lastPrice = value; }
}
}
我现在想要一个列在列表中的图表,每次属性更改时都会自动更新。关于如何做的任何想法?
由于
答案 0 :(得分:1)
有关Binding Data to Series (Chart Controls) see here!
的概述将List<T>
绑定到Chart
的最简单方法是将列表设置为DataSource
并设置X和Y值成员:
chart1.DataSource = MyList;
S1.XValueMember = "Dtm";
S1.YValueMembers = "LastPrice";
至于更新图表,请使用DataBind方法:
chart1.DataBind();
现在您有两个选择:
您知道何时值会发生变化;那么您可以在更改后添加调用。
但也许你不知道这些变化何时发生,或者有许多演员都可能改变名单。
为此,您可以将DataBind
来电权限添加到相关媒体资源的设置者中:
public class MyClass
{
int dtm;
double lastPrice = 0;
public static Chart chart_ { get; set; }
public int Dtm
{
get { return dtm; }
set { dtm = value; }
}
public double LastPrice
{
get { return lastPrice; }
set { lastPrice = value; chart_.DataBind(); }
}
// a constructor to make life a little easier:
public MyClass(int dt, double lpr)
{ Dtm = dt; LastPrice = lpr; }
}
为此,列表必须了解要更新的图表。我已经添加了对该类的引用。所以在添加/绑定点之前,我们设置了一个图表参考:
MyClass.chart_ = chart1; // set the static chart to update
// a few test data using a Random object R:
for (int i = 0; i < 15; i++)
MyList.Add(new MyClass(R.Next(100) + 1 , R.Next(100) / 10f) );
引用可以是static
,因为所有List元素都将更新相同的图表。