← 返回所有博客文章

在WinForm平台下,如果有两个相同的C1Chart,如何保持两者在运行时候的同步呢?

在接下来的一系列文章,我们专门讨论C1Chart的同步。首先就先来介绍滚动条同步。

在文章的最后,有本文所用到的Demo,本文介绍的都是再此基础上进行同步讨论。

首先,在设计界面拖拽两个C1Chart,保持大小和位置的一致,以及给两个C1Chart导入相同的数据。

代码参考:

c1Chart1.SaveChartToFile("Chart1_Data.xml");
c1Chart2.LoadChartFromFile("Chart1_Data.xml");

 

接着,C1Chart的滚动条在默认情况下是不显示的,因此需要通过代码或是设计界面将其显示出来。

代码参考:

this.c1Chart1.ChartArea.AxisX.ScrollBar.Visible = true;
            this.c1Chart1.ChartArea.AxisY.ScrollBar.Visible = true;
            this.c1Chart2.ChartArea.AxisX.ScrollBar.Visible = true;
            this.c1Chart2.ChartArea.AxisY.ScrollBar.Visible = true;

 

其次,调用ScrollBar.AxisScroll事件,当轴的滚动条发生滚动,会触发该事件。

调用代码参考:

this.c1Chart1.ChartArea.AxisX.ScrollBar.AxisScroll += new AxisScrollEventHandler(c1_ScrollBar_AxisScroll);
this.c1Chart1.ChartArea.AxisY.ScrollBar.AxisScroll += new AxisScrollEventHandler(c1_ScrollBar_AxisScroll);
this.c1Chart2.ChartArea.AxisX.ScrollBar.AxisScroll += new AxisScrollEventHandler(c2_ScrollBar_AxisScroll);
this.c1Chart2.ChartArea.AxisY.ScrollBar.AxisScroll += new AxisScrollEventHandler(c2_ScrollBar_AxisScroll);

 

通过AxisScroll事件,获取其中一个滚动条的值,然后通过Value属性赋值给另一个滚动条。

在该事件中同步的处理代码:

  void c1_ScrollBar_AxisScroll(object sender, AxisScrollEventArgs e)
       {
           if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
           {
               this.c1Chart2.ChartArea.AxisX.ScrollBar.Value = e.NewValue;
           }
           else
           {
               this.c1Chart2.ChartArea.AxisY.ScrollBar.Value = e.NewValue;
           }
       }

       void c2_ScrollBar_AxisScroll(object sender, AxisScrollEventArgs e)
       {
           if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
           {
               this.c1Chart2.ChartArea.AxisX.ScrollBar.Value = e.NewValue;
           }
           else
           {
               this.c1Chart2.ChartArea.AxisY.ScrollBar.Value = e.NewValue;
           }
       }

 

通过以上代码,就能保证两个C1Chart在运行时,滚动条保持同步。

例如,运行时,鼠标在C1Chart1上拖拽滚动条发生了移动,C1Chart2会自动移动滚动条保持同步。C1Chart2中也是同理。

最后,附上同步的Demo。

C1Chart_keepScrollbar.zip (12.60 kb)

如果你对C1Chart感兴趣,请到我们的官网下载最新版本:/developer/componentone-winform/controls/chart

如果你有疑问,可以到GCDN论坛获得技术支持:http://gcdn.grapecity.com.cn/showforum-68.html

本系列同步文章参考

C1Chart在WinForm平台下的同步(一):滚动条同步

C1Chart在WinForm平台下的同步(二):缩放同步

C1Chart在WinForm平台下的同步(三):TriangleMarker同步