2015-11-18 4 views
0

Я начальный VB программист, и я пытался перебрать пункты меню, но эта ошибка всегда возникает:Как перебрать элементы меню

Невозможно привести объект системы типа». Windows.Forms.ToolStripMenuItem ' , чтобы напечатать' System.Windows.Forms.MenuItem '.

Вот мой код

Function prop(ByVal objprop) 
    For Each mnuitem As MenuItem In ColorsToolStripMenuItem.DropDownItems 
     mnuitem.Checked = False 
    Next 
    Return Nothing 
End Function 

Извините мой бедный программирования, но может кто-нибудь помочь мне получить этот кусок кода работает? Благодаря!

+0

Иногда меню имеет элементы, а иногда оно имеет другие меню. Вы должны использовать что-то вроде 'TypeOf', чтобы узнать, что это за тип, прежде чем вы предполагаете, что это MenuItem. – Steve

+0

Вы также должны включить опцию Strict – Plutonix

ответ

3

Установите правильный тип для mnuItem. Вы используете System.Windows.Forms.MenuItem вместо правильного типа, который является System.Windows.Forms.ToolStripMenuItem. Как вы можете сказать, существуют различные типы MenuItems, поэтому вы должны указать правильный тип. Кроме того, поскольку этот код возвращает только Nothing, он лучше подходит для подпрограммы.

Sub prop(ByVal objprop) 

    For Each mnuitem As System.Windows.Forms.ToolStripMenuItem In ColorsToolStripMenuItem.DropDownItems 

     mnuitem.Checked = False 

    Next 

End Sub 
+1

Полная квалификация не требуется, если он импортировал пространство имен. Дело в том, что переменная итерации имеет тип MenuItem, из которого не выводится ToolStripMenuItem. https://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripdropdown(v=vs.110).aspx – djv

+0

Вы правы, я отредактировал это, чтобы отразить это. Первоначально я думал, что оба типа были названы MenuItem, но после чтения вашего комментария увидели иначе. Спасибо. – N0Alias