Ошибка MenuStrip - PullRequest
       38

Ошибка MenuStrip

0 голосов
/ 05 сентября 2008

У моих пользователей периодически возникает ошибка при использовании приложения Windows Forms, встроенного в VB.NET 3.5. Очевидно, что когда они щелкают по форме, а форма перерисовывается, красный «X» будет закрашен над элементом управления MenuStrip, и приложение вылетит со следующей ошибкой.

Кто-нибудь видел это раньше? Может ли кто-нибудь указать мне правильное направление?

    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 ]

0 голосов
/ 05 сентября 2008

Спасибо всем вам, кто помог направить меня в правильном направлении. Я сделал изменение, чтобы очистить / добавить меню только при загрузке формы, поэтому я не должен видеть эту ошибку снова, когда форма рисует.

0 голосов
/ 05 сентября 2008

Вы должны будете найти, где в коде это происходит, но это вызвано целочисленной переменной, используемой для доступа к вашему динамическому меню. Прежде чем использовать меню, используйте оператор if, чтобы убедиться, что он находится между 0 и размером коллекции - 1. Кроме того, установите точку останова, где вы создаете переменную, и пошагово просматривайте код, наблюдая, что с ней происходит.

Кроме того, пример кода того, как вы используете динамическое меню, может помочь.

0 голосов
/ 05 сентября 2008

Просматривая код, я обнаружил, что меню очищается и перезагружается при каждом обновлении данных формы. Меню нужно загрузить только один раз, когда форма загружается изначально.

Я думаю, что меню может быть очищено, пока форма находится в процессе рисования. Вы думаете, что это может быть правдой?

0 голосов
/ 05 сентября 2008

Вы добавляете элементы в эту полосу динамически?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...