Hi, in runtime I can see that X-axis limits of my chart (minimum and maximum) are automatically changed as I insert points. That's nice. So I came to an idea to change that minimum and maximum values. It worked. But as soon as I wanted to return (at runtime) to auto I came across some problems. First I discovered that when auto scaling is activated this values are:
Code:
myChart.ChartAreas(0).AxisX.Maximum = Double.NegativeInfinity
myChart.ChartAreas(0).AxisX.Minimum = Double.NegativeInfinity
So I then (at runtime) returned this values to Double.NegativeInfinity hoping that Chart will then automatically (again) scale X axis. Instead I got exception:
Code:
Axis Object - The minimum value of the axis is greater than the largest data point value.
Stack:
Code:
at System.Windows.Forms.DataVisualization.Charting.Axis.EstimateAxis(Double& minimumValue, Double& maximumValue, Boolean autoMaximum, Boolean autoMinimum)
at System.Windows.Forms.DataVisualization.Charting.Axis.EstimateAxis()
at System.Windows.Forms.DataVisualization.Charting.ChartArea.SetDefaultFromIndexesOrData(Axis axis, AxisType axisType)
at System.Windows.Forms.DataVisualization.Charting.ChartArea.SetDefaultAxesValues()
at System.Windows.Forms.DataVisualization.Charting.ChartArea.SetData(Boolean initializeAxes, Boolean checkIndexedAligned)
at System.Windows.Forms.DataVisualization.Charting.ChartArea.ReCalcInternal()
at System.Windows.Forms.DataVisualization.Charting.ChartPicture.Paint(Graphics graph, Boolean paintTopLevelElementOnly)
at System.Windows.Forms.DataVisualization.Charting.Chart.OnPaint(PaintEventArgs e)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(ApplicationContext context)
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at SemaDataAcquisition.My.MyApplication.Main(String[] Args) in xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxcxxxx.vb:line 81
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
As you can see from Call stack, exception did not originated from my code, but was definitely caused by this code:
Code:
myChart.ChartAreas(0).AxisX.Maximum = 150
myChart.ChartAreas(0).AxisX.Minimum = 50
myChart.ChartAreas(0).AxisX.Maximum = Double.NegativeInfinity
myChart.ChartAreas(0).AxisX.Minimum = Double.NegativeInfinity
Note that default values ARE Double.NegativeInfinity!
Any help is greatly appreciated.