我正在制作控件来绘制一些图表。为此,我想从PictureBox
派生一个控件并为其添加一个字段,它基本上是一个简单类的List:
public class Curve
{
public List<PointF> DataPoints;
public Color CurveColor;
//and constructor and stuff
}
PictureBox类:
public class Graph : PictureBox
{
List<Curve> Curves;
//And some code to take care of drawing the curves
}
所以我真的在这里提供了一些提示,有没有办法连接一个事件,所以无论何时在Curve
类中添加或删除Graph
对象,它都会用剩余的曲线对象重绘自己?
我在here找到了一些详细信息,但这是ArrayList
答案 0 :(得分:5)
一种方法是在您的Graph类中使用ObservableCollection,然后监听其CollectionChanged事件以重绘您的图形。
public class Graph : PictureBox {
ObservableCollection<Point> Curves;
//And some code to take care of drawing the curves
public Graph() {
Curves.CollectionChanged += Curves_CollectionChanged;
}
void Curves_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) {
Redraw();
}
}