문제

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 사이인지 확인하세요.또한 변수를 생성하는 위치에 중단점을 배치하고 코드를 단계별로 실행하여 변수에 어떤 일이 발생하는지 살펴보세요.

또한 동적 메뉴를 사용하는 방법에 대한 코드 샘플이 도움이 될 것입니다.

코드를 살펴보면서 양식 데이터가 새로 고쳐질 때마다 메뉴가 지워지고 다시 로드되는 것을 발견했습니다.메뉴는 양식이 처음 로드될 때 한 번만 로드하면 됩니다.

형태가 도색되는 동안 메뉴가 지워지는 게 아닐까 싶습니다.이것이 사실일 수 있다고 생각하시나요?

제가 올바른 방향으로 갈 수 있도록 도와주신 모든 분들께 감사드립니다.양식이 로드될 때 메뉴를 지우거나 추가하기만 하도록 변경했으므로 양식을 그리는 동안 이 오류가 다시 표시되어서는 안 됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top