The important setting is the "Crossing" property on both the X-axis and Y-axis. It needs to be set to zero. Here is a simple example:
Imports System.Windows.Forms.DataVisualization
Public Class Form1
Private WithEvents Chart1 As New Charting.Chart
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim series_1 As New Charting.Series
Dim chartarea_1 As New Charting.ChartArea
With Chart1
.Parent = Me
.Dock = DockStyle.Fill
.ChartAreas.Clear()
chartarea_1 = .ChartAreas.Add("area1")
With chartarea_1
With .AxisX
.Crossing = 0 ' this is the important setting
.Minimum = -20
.Maximum = 20
.MajorGrid.Enabled = True
.LineWidth = 2
.Interval = 5
.MajorGrid.LineDashStyle = Charting.ChartDashStyle.Dot
End With
With .AxisY
.Crossing = 0 ' this is the important setting
.Minimum = -20
.Maximum = 20
.LineWidth = 2
.Interval = 5
.MajorGrid.LineDashStyle = Charting.ChartDashStyle.Dot
End With
End With
' make some data to chart
.Series.Clear()
series_1 = .Series.Add("series1")
With series_1
.ChartType = Charting.SeriesChartType.Spline
.IsVisibleInLegend = False
.ChartArea = chartarea_1.Name
Dim rnd As New Random
For x As Double = -20 To 20
.Points.AddXY(x, (rnd.NextDouble() * 40.0#) - 20.0#)
Next
End With
End With
End Sub
Private Sub Chart1_FormatNumber(ByVal sender As Object, ByVal e As System.Windows.Forms.DataVisualization.Charting.FormatNumberEventArgs) Handles Chart1.FormatNumber
If e.ElementType = Charting.ChartElementType.AxisLabels AndAlso e.Value = 0 Then
' do not print out zero on the axis
e.LocalizedValue = ""
End If
End Sub
End Class