Domanda

I miei utenti riscontrano un errore intermittente quando utilizzano un'applicazione Windows Form incorporata in VB.NET 3.5.Apparentemente quando fanno clic sul modulo e il modulo viene ridisegnato, una "X" rossa verrà dipinta sul controllo MenuStrip e l'app si bloccherà con il seguente errore.

Qualcuno l'ha già visto?Qualcuno può indicarmi la giusta direzione?

    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)
È stato utile?

Soluzione

Stai aggiungendo elementi a questa striscia in modo dinamico?

Altri suggerimenti

Dovrai scoprire in quale punto del codice ciò accade, ma è causato da una variabile intera utilizzata per accedere al menu dinamico.Prima di utilizzare il menu, utilizza un'istruzione if per assicurarti che sia compresa tra 0 e la dimensione della raccolta - 1.Inoltre, posiziona un punto di interruzione in cui crei la variabile e scorri il codice osservando cosa gli succede.

Inoltre, un esempio di codice su come utilizzi il menu dinamico potrebbe essere d'aiuto.

Osservando il codice, ho scoperto che il menu viene cancellato e ricaricato ogni volta che i dati del modulo vengono aggiornati.Il menu deve essere caricato solo una volta, quando il modulo viene inizialmente caricato.

Penso che il menu potrebbe essere cancellato mentre il modulo è in fase di verniciatura.Pensi che questo possa essere vero?

Grazie a tutti voi che mi avete aiutato a indicarmi la giusta direzione.Ho apportato una modifica per cancellare/aggiungere il menu solo quando il modulo viene caricato, quindi non dovrei visualizzare nuovamente questo errore quando il modulo viene dipinto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top