2008-09-05 6 views
0

Meine Benutzer haben einen zeitweiligen Fehler bei der Verwendung einer Windows Forms-Anwendung in VB.NET 3.5 erstellt. Offensichtlich, wenn sie auf das Formular klicken und das Formular neu malt, wird ein rotes "X" über das MenuStrip-Steuerelement gezeichnet und die App wird mit dem folgenden Fehler abstürzen.MenuStrip Fehler

Hat jemand das schon mal gesehen? Kann mir jemand in die richtige Richtung zeigen?

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) 

Antwort

0

Fügen Sie Elemente dynamisch zu diesem Streifen hinzu?

0

Sie müssen herausfinden, wo im Code dies geschieht, aber es wird durch eine Integer-Variable verursacht, die verwendet wird, um auf Ihr dynamisches Menü zuzugreifen. Bevor Sie das Menü verwenden, verwenden Sie eine if-Anweisung, um sicherzustellen, dass sie zwischen 0 und der Größe der Auflistung liegt. 1. Platzieren Sie außerdem einen Unterbrechungspunkt, an dem Sie die Variable erstellen, und durchlaufen Sie den Code.

Auch ein Code-Beispiel, wie Sie das dynamische Menü verwenden, würde helfen.

0

Beim Durchsuchen des Codes habe ich festgestellt, dass das Menü gelöscht und neu geladen wird, wenn die Formulardaten aktualisiert werden. Das Menü muss nur einmal geladen werden, wenn das Formular zum ersten Mal geladen wird.

Ich denke, dass das Menü gelöscht werden kann, während das Formular gerade gemalt wird. Denkst du, dass das wahr sein kann?

0

Vielen Dank an alle, die mir geholfen haben, in die richtige Richtung zu zeigen. Ich habe eine Änderung vorgenommen, um das Menü nur zu löschen/hinzuzufügen, wenn das Formular geladen wird, also sollte ich diesen Fehler nicht erneut sehen, wenn das Formular malt.