使用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)
答案 0 :(得分:0)
您是否动态地向此条带添加项目?
答案 1 :(得分:0)
您必须找到代码中的位置,但这是由用于访问动态菜单的整数变量引起的。在使用菜单之前,使用if语句确保它介于0和集合的大小之间 - 1.另外,在创建变量的位置放置一个断点,并逐步查看代码,看看它发生了什么。
此外,您使用动态菜单的代码示例也会有所帮助。
答案 2 :(得分:0)
在查看代码时,我发现只要刷新表单数据,菜单就会被清除并重新加载。最初加载表单时,只需加载一次菜单。
我认为在表单正在绘制过程中,菜单可能会被清除。你认为这可能是真的吗?
答案 3 :(得分:0)
感谢所有帮助我指明正确方向的人。我更改了只在表单加载时清除/添加菜单,所以在表单绘制时我不应该再看到这个错误。