ZedGraph Scroll Event

In One of my Project,I have two Zedgraph in the one Window Form.I am loading data in the Graph,for both zedGraph ,Making AutoScroll is True.
if i move Left or Right the Horizontal scrollBar of the First Graph,then the Graph of the First is moving on the move of Fist Horizontal ScrollBar move.Now i want to develop same effect on the Second Graph on the Move of First Graph Scrollbar move.Code of my Project is Below:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ZedGraph;
using System.IO;

namespace MyTestGraph
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            CreateGraph_Test(zedGraphControl_Left, zedGraphControl_Right);
            SetSize();         
           
        }

        public void CreateChart(ZedGraphControl zgc)
        {
            GraphPane myPane = zgc.GraphPane;

            // Set the titles and axis labels
            myPane.Title.Text = "My Test Graph \n Wind Management";
            myPane.XAxis.Title.Text = "Time (hour)";
            myPane.YAxis.Title.Text = "Wind Speed (m/s)";
            myPane.Y2Axis.Title.Text = "Temparature (ºC)";

            PointPairList vList = new PointPairList();
            vList = ListWindSpeed();
            PointPairList aList = new PointPairList();
            aList = ListTemparature();

            LineItem myCurve = myPane.AddCurve("Velocity", vList, Color.Green, SymbolType.Star);
            myCurve.Symbol.Fill = new Fill(Color.White);

            myCurve = myPane.AddCurve("Acceleration", aList, Color.Blue, SymbolType.Circle);
            myCurve.Symbol.Fill = new Fill(Color.White);

            myCurve.IsY2Axis = true;
            myCurve.Symbol.Fill = new Fill(Color.White);
            myCurve.YAxisIndex = 1;
            myCurve.Symbol.Fill = new Fill(Color.White);

            // Associate this curve with the Y2 axis
            myCurve.IsY2Axis = true;
            // Associate this curve with the second Y2 axis
            myCurve.YAxisIndex = 1;

            // Show the x axis grid
            myPane.XAxis.MajorGrid.IsVisible = true;

            // Setting Color
            myPane.YAxis.Scale.FontSpec.FontColor = Color.Green;
            myPane.YAxis.Title.FontSpec.FontColor = Color.Green;
            myPane.Y2Axis.Scale.FontSpec.FontColor = Color.Blue;
            myPane.Y2Axis.Title.FontSpec.FontColor = Color.Blue;

            // turn off the opposite tics so the Y tics don't show up on the Y2 axis
            myPane.YAxis.MajorTic.IsOpposite = false;
            myPane.YAxis.MinorTic.IsOpposite = false;
            // Don't display the Y zero line
            myPane.YAxis.MajorGrid.IsZeroLine = false;
            // Align the Y axis labels so they are flush to the axis
            myPane.YAxis.Scale.Align = AlignP.Inside;
            myPane.YAxis.Scale.Max = 100;

            // Enable the Y2 axis display
            myPane.Y2Axis.IsVisible = true;
            // Make the Y2 axis scale blue

            // turn off the opposite tics so the Y2 tics don't show up on the Y axis
            myPane.Y2Axis.MajorTic.IsOpposite = false;
            myPane.Y2Axis.MinorTic.IsOpposite = false;
            // Display the Y2 axis grid lines
            myPane.Y2Axis.MajorGrid.IsVisible = true;
            // Align the Y2 axis labels so they are flush to the axis
            myPane.Y2Axis.Scale.Align = AlignP.Inside;
            //myPane.Y2Axis.Scale.Min = 1.5;
            myPane.Y2Axis.Scale.Max = 100;

            myPane.Chart.Fill = new Fill(Color.White, Color.WhiteSmoke, 45.0f);

            zgc.AxisChange();
        }

        public void CreateChart1(ZedGraphControl zgc1)
        {
            GraphPane myPane = zgc1.GraphPane;

            // Set the titles and axis labels
            myPane.Title.Text = "My Test Graph \n Wind Management";
            myPane.XAxis.Title.Text = "Time (hour)";
            myPane.YAxis.Title.Text = "Wind Speed (m/s)";
            myPane.Y2Axis.Title.Text = "Temparature (ºC)";

            PointPairList vList = new PointPairList();
            vList = ListWindSpeed();
            PointPairList aList = new PointPairList();
            aList = ListTemparature();

            LineItem myCurve = myPane.AddCurve("Velocity", vList, Color.Green, SymbolType.Star);
            myCurve.Symbol.Fill = new Fill(Color.White);

            myCurve = myPane.AddCurve("Acceleration", aList, Color.Blue, SymbolType.Circle);
            myCurve.Symbol.Fill = new Fill(Color.White);

            myCurve.IsY2Axis = true;
            myCurve.Symbol.Fill = new Fill(Color.White);
            myCurve.YAxisIndex = 1;
            myCurve.Symbol.Fill = new Fill(Color.White);

            // Associate this curve with the Y2 axis
            myCurve.IsY2Axis = true;
            // Associate this curve with the second Y2 axis
            myCurve.YAxisIndex = 1;

            // Show the x axis grid
            myPane.XAxis.MajorGrid.IsVisible = true;

            // Setting Color
            myPane.YAxis.Scale.FontSpec.FontColor = Color.Green;
            myPane.YAxis.Title.FontSpec.FontColor = Color.Green;
            myPane.Y2Axis.Scale.FontSpec.FontColor = Color.Blue;
            myPane.Y2Axis.Title.FontSpec.FontColor = Color.Blue;

            // turn off the opposite tics so the Y tics don't show up on the Y2 axis
            myPane.YAxis.MajorTic.IsOpposite = false;
            myPane.YAxis.MinorTic.IsOpposite = false;
            // Don't display the Y zero line
            myPane.YAxis.MajorGrid.IsZeroLine = false;
            // Align the Y axis labels so they are flush to the axis
            myPane.YAxis.Scale.Align = AlignP.Inside;
            myPane.YAxis.Scale.Max = 100;

            // Enable the Y2 axis display
            myPane.Y2Axis.IsVisible = true;
            // Make the Y2 axis scale blue

            // turn off the opposite tics so the Y2 tics don't show up on the Y axis
            myPane.Y2Axis.MajorTic.IsOpposite = false;
            myPane.Y2Axis.MinorTic.IsOpposite = false;
            // Display the Y2 axis grid lines
            myPane.Y2Axis.MajorGrid.IsVisible = true;
            // Align the Y2 axis labels so they are flush to the axis
            myPane.Y2Axis.Scale.Align = AlignP.Inside;
            //myPane.Y2Axis.Scale.Min = 1.5;
            myPane.Y2Axis.Scale.Max = 100;

            myPane.Chart.Fill = new Fill(Color.White, Color.WhiteSmoke, 45.0f);

            zgc1.AxisChange();
        }

        private void SetSize()
        {
            zedGraphControl_Left.Location = new Point(10, 10);

            zedGraphControl_Left.Size = new Size(ClientRectangle.Width - 20, ClientRectangle.Height - 20);


            zedGraphControl_Right.Location = new Point(10, 10);

            zedGraphControl_Right.Size = new Size(ClientRectangle.Width - 20, ClientRectangle.Height - 20);
        }


        private PointPairList ListWindSpeed()
        {
            PointPairList list = new PointPairList();
            string line;
            // Read the file and display it line by line.
            using (StreamReader file = new StreamReader("D:\\WindSpeed.txt"))
            {
                while ((line = file.ReadLine()) != null)
                {
                    string[] xy = line.Split('\t');
                    if (xy.Length == 2)
                    {
                        if (xy[0].ToString() != "X" && xy[1].ToString() != "Y")
                        {
                            double x = Convert.ToDouble(xy[0]);
                            double y = Convert.ToDouble(xy[1]);

                            list.Add(x, y);
                        }
                    }
                }

                file.Close();
            }
            return list;
        }

        private PointPairList ListTemparature()
        {
            PointPairList list = new PointPairList();
            string line;

            // Read the file and display it line by line.
            using (StreamReader file = new StreamReader("D:\\Temparature.txt"))
            {
                while ((line = file.ReadLine()) != null)
                {
                    string[] xy = line.Split('\t');
                    if (xy.Length == 2)
                    {
                        if (xy[0].ToString() != "X" && xy[1].ToString() != "Y")
                        {
                            double x = Convert.ToDouble(xy[0]);
                            double y = Convert.ToDouble(xy[1]);

                            list.Add(x, y);
                        }
                    }
                }
                file.Close();
            }
            return list;
        }

        private PointPairList ListForGraph2()
        {
            PointPairList list = new PointPairList();
            string line;

            // Read the file and display it line by line.
            using (StreamReader file = new StreamReader("D:\\Data2.txt"))
            {
                while ((line = file.ReadLine()) != null)
                {
                    string[] xy = line.Split('\t');
                    if (xy.Length == 2)
                    {
                        if (xy[0].ToString() != "X" && xy[1].ToString() != "Y")
                        {
                            double x = Convert.ToDouble(xy[0]);
                            double y = Convert.ToDouble(xy[1]);

                            list.Add(x, y);
                        }
                    }
                }

                file.Close();
            }
            return list;
        }

        private PointPairList ListForGraph3()
        {
            PointPairList list = new PointPairList();
            string line;

            // Read the file and display it line by line.
            using (StreamReader file = new StreamReader("D:\\Data3.txt"))
            {
                while ((line = file.ReadLine()) != null)
                {
                    string[] xy = line.Split('\t');
                    if (xy.Length == 2)
                    {
                        if (xy[0].ToString() != "X" && xy[1].ToString() != "Y")
                        {
                            double x = Convert.ToDouble(xy[0]);
                            double y = Convert.ToDouble(xy[1]);

                            list.Add(x, y);
                        }
                    }
                }

                file.Close();
            }
            return list;
        }

        private void CreateGraph_Test(ZedGraphControl zgc, ZedGraphControl zgc1)
        {
            // show the horizontal scroll bar
            zgc.IsShowHScrollBar = true;

            // automatically set the scrollable range to cover the data range from the curves
            zgc.IsAutoScrollRange = true;
            // Add 10% to scale range
            zgc.ScrollGrace = 0.1;

            // Horizontal pan and zoom allowed
            zgc.IsEnableHPan = false;
            zgc.IsEnableHZoom = false;

            // Vertical pan and zoom not allowed
            zgc.IsEnableVPan = false;
            zgc.IsEnableVZoom = false;

            // Set the initial viewed range
            zgc.GraphPane.XAxis.Scale.Min = 50.0;
            zgc.GraphPane.XAxis.Scale.Max = 250.0;

            //show the cursor Value
            zgc.IsShowCursorValues = true;
           
            ScrollSample_Setup(zgc);

            zgc1.IsShowHScrollBar = true;

            // automatically set the scrollable range to cover the data range from the curves
            zgc1.IsAutoScrollRange = true;
            // Add 10% to scale range
            zgc1.ScrollGrace = 0.1;

            // Horizontal pan and zoom allowed
            zgc1.IsEnableHPan = false;
            zgc1.IsEnableHZoom = false;

            // Vertical pan and zoom not allowed
            zgc1.IsEnableVPan = false;
            zgc1.IsEnableVZoom = false;

            //show the cursor Value
            zgc1.IsShowCursorValues = true;
            // Set the initial viewed range
            zgc1.GraphPane.XAxis.Scale.Min = 50.0;
            zgc1.GraphPane.XAxis.Scale.Max = 250.0;

            ScrollSample_Setup(zgc1);
        }

        private void ScrollSample_Setup(ZedGraphControl zgc)
        {
            // get a reference to the GraphPane
            GraphPane myPane = zgc.GraphPane;
            // Set the titles
            myPane.Title.Text = "Sample ScrollBar Graph";
            myPane.XAxis.Title.Text = "Index";
            myPane.XAxis.Title.Text = "Phased Sine Data";
            // Generate some sample sine data in PointPairList's
            PointPairList list = new PointPairList();
            PointPairList list2 = new PointPairList();
            PointPairList list3 = new PointPairList();
            for (int i = 0; i < 100; i++)
            {
                double x = (double)i * 5.0 + 25.0;
                double y = Math.Sin((double)i * Math.PI / 25.0) * 16.0;
                double y2 = Math.Sin((double)i * Math.PI / 25.0 + 30.0) * 12.0;
                double y3 = Math.Sin((double)i * Math.PI / 25.0 + 60.0) * 8.0;
                list.Add(x, y);
                list2.Add(x, y2);
                list3.Add(x, y3);
            }
            // create three curves from the above data sets
            LineItem myCurve = myPane.AddCurve("Alpha", list, Color.Red, SymbolType.Diamond);
            myCurve = myPane.AddCurve("Beta", list2, Color.Blue, SymbolType.Plus);
            myCurve = myPane.AddCurve("Sigma", list3, Color.Green, SymbolType.XCross);
            // scale the axes base on the data
            zgc.AxisChange();
        }

        private void zedGraphControl_Left_Scroll(object sender, ScrollEventArgs e)
        {

        }

        private void zedGraphControl_Left_ScrollDoneEvent(ZedGraphControl sender, ScrollBar scrollBar, ZoomState oldState, ZoomState newState)
        {
            //ScrollBar sc = (ScrollBar)zedGraphControl_Right.Controls[0];
            //sc.Value = scrollBar.Value;
            //zedGraphControl_Right_ScrollDoneEvent(sender, scrollBar, oldState, newState);
        }

        private void zedGraphControl_Left_ScrollEvent(object sender, ScrollEventArgs e)
        {
            ScrollBar sc = (ScrollBar)zedGraphControl_Right.Controls[0];
            sc.Value = e.NewValue;
        }

        private void zedGraphControl_Left_ScrollProgressEvent(ZedGraphControl sender, ScrollBar scrollBar, ZoomState oldState, ZoomState newState)
        {
          
        }


        private void zedGraphControl_Right_ScrollDoneEvent(ZedGraphControl sender, ScrollBar scrollBar, ZoomState oldState, ZoomState newState)
        {

        }

        private void zedGraphControl_Right_ScrollEvent(object sender, ScrollEventArgs e)
        {
            ScrollBar sc = (ScrollBar)zedGraphControl_Left.Controls[0];
            sc.Value = e.NewValue;
        }

    }
}

你可能感兴趣的:(scroll)