0

我的用户在使用内置于 VB.NET 3.5 的 Windows 窗体应用程序时遇到间歇性错误。显然,当他们单击表单并重新绘制表单时,将在 MenuStrip 控件上绘制一个红色的“X”,并且应用程序将因以下错误而崩溃。

有没有人见过这个?有人可以指出我正确的方向吗?

    System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
       Parameter name: index

   at System.Collections.ArrayList.get_Item(Int32 index)
   at System.Windows.Forms.ToolStripItemCollection.get_Item(Int32 index)
   at System.Windows.Forms.ToolStrip.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.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ToolStrip.WndProc(Message& m)
   at System.Windows.Forms.MenuStrip.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.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
4

4 回答 4

0

您是否正在动态地将项目添加到此条带?

于 2008-09-05T14:33:55.893 回答
0

您必须找到代码中发生这种情况的位置,但这是由用于访问动态菜单的整数变量引起的。在使用菜单之前,使用 if 语句确保它介于 0 和集合的大小 - 1 之间。此外,在创建变量的位置放置一个断点并单步执行代码,观察它发生了什么。

此外,您如何使用动态菜单的代码示例也会有所帮助。

于 2008-09-05T14:45:29.860 回答
0

在查看代码时,我发现每当刷新表单数据时,菜单就会被清除并重新加载。菜单只需要在最初加载表单时加载一次。

我认为在绘制表单的过程中菜单可能会被清除。你认为这可能是真的吗?

于 2008-09-05T15:34:01.367 回答
0

感谢所有帮助我指出正确方向的人。我进行了更改,仅在加载表单时清除/添加菜单,因此在绘制表单时我不应该再次看到此错误。

于 2008-09-05T18:21:31.447 回答