C# DevExpress组件 - ChartControl图表控件学习-整体感知(一)
1 逻辑框架图梳理
以逻辑框架图,进行代码验证
2 代码实现
2.1 实现内容
代码实现:添加一个ChartControl图表控件,并提供显示三个变量显示在三个位置
2.2 初始界面配置
添加一个menustrip组件,并防止顶部,界面如下:
双击:添加一个ChartControl控件 按钮,编写添加相关程序
2.3 代码
using DevExpress.XtraCharts;
using System;
using System.Windows.Forms;
namespace chartcontrolText
{
public partial class Form1 : DevExpress.XtraEditors.XtraForm
{
public Form1()
{
InitializeComponent();
}
private void 添加一个ChartControl控件ToolStripMenuItem_Click(object sender, EventArgs e)
{
#region
///
///ChartControl对象:chartControl1
///
ChartControl chartControl1 = new ChartControl();
chartControl1.Parent = this;
chartControl1.Dock = DockStyle.Fill;
///
///XYDiagram对象:xyDiagram1
///
XYDiagram xyDiagram1 = new XYDiagram();
///
///XYDiagramPane对象:xyDiagramPane1
///
XYDiagramPane xyDiagramPane1 = new XYDiagramPane();
XYDiagramPane xyDiagramPane2 = new XYDiagramPane();
///
///将XYDiagramPane对象:xyDiagramPane1,添加到XYDi中agram对象:xyDiagram1
///
xyDiagram1.Panes.AddRange(new XYDiagramPane[] { xyDiagramPane1, xyDiagramPane2 });
///
///Series对象:series1
///
Series series1 = new Series();
Series series2 = new Series();
Series series3 = new Series();
///
///将Series对象:series1,添加到ChartControl对象:chartControl1
///
chartControl1.SeriesSerializable = new Series[] { series1, series2, series3 };
///
///xxxSeriesView系列视图对象:lineSeriesView1
///
LineSeriesView lineSeriesView1 = new LineSeriesView();
LineSeriesView lineSeriesView2 = new LineSeriesView();
LineSeriesView lineSeriesView3 = new LineSeriesView();
///
///将xxxSeriesView系列视图对象:lineSeriesView1,绑定到对应的系列对象中,即指定系列的系列视图类型
///
series1.View = lineSeriesView1;
series2.View = lineSeriesView2;
series3.View = lineSeriesView3;
///
///以下是必不可少的,如果没有,chartControl1.Diagram = xyDiagram1;语句会报错
///语句数量由:ChartControl对象个数、Series对象个数、xxxSeriesView系列视图对象个数决定
///
((System.ComponentModel.ISupportInitialize)(chartControl1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(xyDiagram1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(xyDiagramPane1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(xyDiagramPane2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(series1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(lineSeriesView1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(series2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(lineSeriesView2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(series3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(lineSeriesView3)).BeginInit();
///
///将XYDiagramPane对象:xyDiagramPane1,添加到ChartControl对象:chartControl1中
///
chartControl1.Diagram = xyDiagram1;
///
///为具体的XY图表板添加具体的数据,即让指定的Series对象显示在具体的XY图面板中
///
xyDiagramPane1.Name = "Pane_1";
xyDiagramPane2.Name = "Pane_2";
lineSeriesView2.PaneName = xyDiagramPane1.Name;
lineSeriesView3.PaneName = xyDiagramPane2.Name;
#endregion
}
}
}
2.4 执行结果
3 出错点分析
(1)
初始代码编写过程无如下代码:
在执行时出错:
当加入后就可解决该问题
(2)
当未对xyDiagramPane1对象指定Name属性时,即无如下代码
xyDiagramPane1.Name = "Pane_1";
xyDiagramPane2.Name = "Pane_2";
而是直接进行指定lineSeriesView2的PaneName 时
lineSeriesView2.PaneName = xyDiagramPane1.Name;
lineSeriesView3.PaneName = xyDiagramPane2.Name;
会出现未绑定series实例数据的空XY图表面板,如下: