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

在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事件,当轴的滚动条发生滚动,会触发该事件。

发布于 2014/12/05 00:00

ComponentOne Enterprise

在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同步

ComponentOne Enterprise | 下载试用

ComponentOne 是一套专注于企业 .NET开发、支持 .NET Core 平台,并完美集成于 Visual Studio 的第三方控件集,包含 300 多种 .NET开发控件,提供表格数据管理、数据可视化、报表和文档、日程安排、输入和编辑、导航和布局、系统提升工具等七大功能,被誉为“.NET开发的‘瑞士军刀’”。

ComponentOne 为您提供专业的产品咨询服务,并由技术支持工程师为您1对1解答。>> 发帖提问

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态