Aligning the vertical axes of a chart between two chart objects

In my application, I have 2 graphics, one above the other in the user interface (as closer to the top of the monitor). Both horizontal axes of the graphs belong to the same time range. Their vertical axes can be very different, so I want to keep them as in graphs. They offer additional information, and therefore I would like to synchronize their horizontal axes, even if their vertical axis labels are shifted.

In both cases, the chart controls that contain them are the same width, but only the data inside is shifted.

I currently have this:

10000|
 8000|
 6000|
 4000|
 2000|
    0 ---------------------------------
      0                              10

Long Label 3|
Long Label 2|
Long Label 1|
Long Label 0 -----------------------
             0                    10

And I want this:

       10000|
        8000|
        6000|
        4000|
        2000|
           0 ---------------------------------
             0                              10

Long Label 3|
Long Label 2|
Long Label 1|
Long Label 0 ---------------------------------
             0                              10

Chart MSChart. , , .

? , , , .

+5
3

. , , , ChartArea.AlignWithChartArea.

//Say We have 2 Chart areas, one named "Main Info" and the other "Supplemental"
chart1.ChartAreas["Supplemental"].AlignWithChartArea = "Main Info";
chart1.ChartAreas["Supplemental"].AlignmentOrientation = AreaAlignmentOrientations.Vertical;
chart1.ChartAreas["Supplemental"].AlignmentStyle = AreaAlignmentStyles.All;

, .

+3

, , .
- .

double x_position = chart1.ChartAreas[0].AxisX.ScaleView.Position;
double x_size = chart1.ChartAreas[0].AxisX.ScaleView.Size;
chart2.ChartAreas[0].AxisX.ScaleView.Zoom(x_position, x_position + x_size);    

AxisViewChanged.

+2

For real-time synchronization, several CharArea, as Temp said:

private void chart1_AxisViewChanged(object sender, ViewEventArgs e)
{
    foreach (var charArea in chart1.ChartAreas)
    {
        if (charArea != e.ChartArea)
        {
            double x_position = e.ChartArea.AxisX.ScaleView.Position;
            double x_size = e.ChartArea.AxisX.ScaleView.Size;
            charArea.AxisX.ScaleView.Zoom(x_position, x_position + x_size);    
        }                
    }            
}
+2
source