MenuStrip错误
时间:2020-03-05 18:48:15 来源:igfitidea点击:
使用VB.NET 3.5内置的Windows Forms应用程序时,我的用户出现间歇性错误。显然,当他们单击窗体并重新绘制窗体时,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)
解决方案
回答
我们是否正在向此地带动态添加项目?
回答
我们将必须在代码中找到发生这种情况的地方,但这是由用于访问动态菜单的整数变量引起的。在使用菜单之前,请使用if语句确保它在0到集合1的大小之间。此外,在创建变量的位置放置一个断点,并逐步执行代码以查看发生了什么。
此外,有关如何使用动态菜单的代码示例也将有所帮助。
回答
浏览代码时,我发现每当刷新表单数据时都会清除并重新加载菜单。最初加载表单时,菜单仅需要加载一次。
我认为菜单在绘制过程中可能会被清除。我们认为这可能是对的吗?
回答
感谢所有帮助我指出正确方向的人。我进行了更改,仅在加载表单时才清除/添加菜单,因此在绘制表单时我不会再看到此错误。