将图表作为控件从一个单独的类中添加,但是却无法绘制该图表的问题,可能是由于未正确初始化图表的原因所导致。因此,可以通过以下方法解决此问题:
1.在主类中初始化图表,并将其传递给控件所在的类。
public partial class MainForm : Form
{
private Chart chart1;
public MainForm()
{
InitializeComponent();
chart1 = new Chart();
// Add chart initialization code here
chart1.ChartAreas.Add(new ChartArea());
chart1.Series.Add(new Series());
// ...
MyUserControl userControl = new MyUserControl(chart1);
Controls.Add(userControl);
}
}
2.在控件类中接受初始化的图表并将其设置为控件的成员变量。
public partial class MyUserControl : UserControl
{
private Chart myChart;
public MyUserControl(Chart chart)
{
InitializeComponent();
myChart = chart;
// ...
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (myChart != null)
{
// Draw chart here
myChart.DrawToBitmap(bitmap, new Rectangle(Point.Empty, myChart.Size));
e.Graphics.DrawImage(bitmap, 0, 0);
}
}
}
注意:需要在OnPaint方法中手动绘制图表。
通过以上两个步骤,便可解决从单独的类中添加图表控件不能绘制的问题。