|
渋木宏明(ひどり) さん、Azulean さん、ありがとうございます。
> 少なくとも、アプリケーション実行中に Application.Run() が再度(何回も?)呼び出されるのはおかしいです。
やはりそうなのですね。
>>ただし、新規でフォームAを表示し、そのAの情報を元にBを呼び出すと、Application.Runを再度通りエラーになります。 > 恐らくですが、「Application.Runを通り」ではなく、例外発生時の実行している行が自分で書いたコードではなかったために一番外側のApplication.Runが薄い緑色で表示されていただけではないでしょうか。 > 勘違いしやすいところですが、現象を的確に捉えて表現しないと迷走することが多いですので気をつけましょう。 > > なお、どこが悪いかは現時点ではわかりません。発生した例外のStackTraceプロパティの情報が参考になるかどうかだと思います。
StackTraceの値は以下でした。
System.ArgumentOutOfRangeException はハンドルされませんでした。 Message="インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。\r\nパラメータ名: index" Source="mscorlib" ParamName="index" StackTrace: 場所 System.Collections.ArrayList.get_Item(Int32 index) 場所 NPlot.LabelAxis.DrawTicks(Graphics g, Point physicalMin, Point physicalMax, Object& labelOffset, Object& boundingBox) 場所 NPlot.Axis.Draw(Graphics g, Point physicalMin, Point physicalMax, Rectangle& boundingBox) 場所 NPlot.PhysicalAxis.Draw(Graphics g, Rectangle& boundingBox) 場所 NPlot.PhysicalAxis.GetBoundingBox() 場所 NPlot.PlotSurface2D.DeterminePhysicalAxesToDraw(Rectangle bounds, Axis xAxis1, Axis xAxis2, Axis yAxis1, Axis yAxis2, PhysicalAxis& pXAxis1, PhysicalAxis& pXAxis2, PhysicalAxis& pYAxis1, PhysicalAxis& pYAxis2) 場所 NPlot.PlotSurface2D.Draw(Graphics g, Rectangle bounds) 場所 NPlot.Windows.PlotSurface2D.Draw(Graphics g, Rectangle bounds) 場所 NPlot.Windows.PlotSurface2D.DoPaint(PaintEventArgs pe, Int32 width, Int32 height) 場所 NPlot.Windows.PlotSurface2D.OnPaint(PaintEventArgs pe) 場所 System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs) 場所 System.Windows.Forms.Control.WmPaint(Message& m) 場所 System.Windows.Forms.Control.WndProc(Message& m) 場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 場所 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 場所 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageA(MSG& msg) 場所 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) 場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 場所 System.Windows.Forms.Application.Run(Form mainForm) 場所 Editor.Program.Main(String[] args) 場所 D:\v101\Editor\Editor\Program.cs:行 67 場所 System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args) 場所 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 場所 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state) 場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 場所 System.Threading.ThreadHelper.ThreadStart()
Nplotで目盛りを表示する処理が終了した後にエラーになっているようです。 この辺を調べてみます。
|