Question

Mes utilisateurs sont d'avoir une erreur intermittente lors de l'utilisation d'une application Windows Forms construit en VB.NET 3.5.Apparemment, quand ils cliquent sur la forme et la forme de re-peint, un " X " rouge sera peinte sur le contrôle MenuStrip, et l'application crash avec l'erreur suivante.

Quelqu'un a déjà vu ça?Quelqu'un peut me pointer dans la bonne direction?

    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)
Était-ce utile?

La solution

Êtes-vous d'ajouter des éléments à cette bande de façon dynamique?

Autres conseils

Vous aurez à trouver où dans le code ce qui se passe, mais il est causé par une variable de type entier utilisé pour accéder à votre menu dynamique.Avant d'utiliser le menu, utilisez une instruction if pour s'assurer qu'elle est comprise entre 0 et la taille de la collection - 1.Aussi, placer un point de rupture où vous créez la variable et pas à travers le code à regarder ce qui se passe à elle.

Aussi, un code d'exemple de la façon dont vous utilisez le menu dynamique pourrait l'aider.

Tout en regardant à travers le code, j'ai découvert que le menu est en cours d'effacement et rechargé à chaque fois que les données du formulaire est en cours d'actualisation.Le menu ne doit être chargée qu'une seule fois, lorsque le formulaire est chargé pour la première fois.

Je pense que le menu peut être désactivée si la forme est en train d'être peint.Pensez-vous que cela peut être vrai?

Merci à vous tous qui ont aidé à me diriger dans la bonne direction.J'ai fait un changement à seulement effacer/ajouter le menu lorsque le formulaire est chargé, donc je ne devrais pas voir à nouveau cette erreur lorsque le formulaire est de la peinture.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top