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-05T18:21:31.447 に答える
0

コードを調べていると、フォーム データが更新されるたびにメニューがクリアされ、再ロードされることがわかりました。メニューは、フォームが最初にロードされるときに 1 回だけロードする必要があります。

フォームの描画中にメニューがクリアされている可能性があると思います。これは本当かもしれないと思いますか?

于 2008-09-05T15:34:01.367 に答える