将对象列表绑定到图表
我有一个对象列表:
List MyList = new List();
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; } } }
我现在想要一个列在列表中的图表,每次属性更改时都会自动更新。 有什么想法怎么做?
谢谢
有关将数据绑定到系列(图表控件)的概述, 请参见此处!
将List
绑定到Chart
的最简单方法是将List
设置为DataSource
并设置X和Y值成员:
chart1.DataSource = MyList; S1.XValueMember = "Dtm"; S1.YValueMembers = "LastPrice";
至于更新图表,您使用DataBind方法:
chart1.DataBind();
现在您有两种选择:
要么你知道价值何时改变; 那么您可以在更改后添加调用。
但也许你不知道这些变化何时发生,或者有许多演员都可能改变列表。
为此,您可以将DataBind
调用权限添加到相关属性的setter中:
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元素都将更新相同的图表。