MenuStrip в Visual Basic .NET

Может кто-нибудь объяснить мне, почему, черт возьми? Когда я пытаюсь установить элемент MenuStrip, вызывая его по имени, это дает мне исключение?

В Sample.exe произошло необработанное исключение типа «System.NullReferenceException».

Дополнительная информация: Ссылка на объект не указывает на экземпляр объекта.

Любое из следующих утверждений вызывает ошибки.

frmMenu.MenuStripfrmMenu.Items(key:="Enter").Enabled = False

frmMenu.MenuStripfrmMenu.Items("Enter").Enabled = False

Однако, когда я вызываю Items, используя целое число, он работает отлично.


person mike    schedule 14.06.2012    source источник
comment
Нет, это обычный текст.   -  person mike    schedule 14.06.2012
comment
Не уверен, что вы имеете в виду, но то, что я пытаюсь сделать, это... есть MenuStrip из панели инструментов, которую я добавил в форму и составил список всех меню (нет подменю). Я пытаюсь отключить некоторые меню с самого начала и включить их во время работы приложения. Поэтому я отключил некоторые меню. Но я не хочу использовать этот Items(0).Enabled = False, есть ли способ сделать что-то подобное frmMenu.MenuStripfrmMenu.SOMETHING(Enter).Enabled = False   -  person mike    schedule 14.06.2012


Ответы (1)


Вы должны использовать свойство name пункта меню, а не свойство text:

Public Sub New()
  InitializeComponent()

  Dim menu As New MenuStrip
  Dim menuOne As New ToolStripMenuItem("Menu One") With {.Name = "menuOne"}
  Dim menuTwo As New ToolStripMenuItem("Menu Two") With {.Name = "menuTwo"}
  menu.Items.Add(menuOne)
  menu.Items.Add(menuTwo)
  Me.Controls.Add(menu)

  menu.Items("menuOne").Enabled = False
  AddHandler menu.Items("menuTwo").Click, AddressOf Menu_Click
End Sub

Private Sub Menu_Click(ByVal sender As Object, ByVal e As EventArgs)
  MessageBox.Show("This menu works.")
End Sub
person LarsTech    schedule 14.06.2012
comment
Это потрясающе. Нужно немного изменить его, но в основном то, что мне нужно. Спасибо. - person mike; 14.06.2012