Visual Basic .NET中的MenuStrip

时间:2012-06-14 17:15:41

标签: vb.net menustrip

有人可以向我解释为什么会这样吗?当我尝试设置一个按名称调用它的MenuStrip项时,它给了我一个例外吗?

  

Sample.exe

中出现未处理的“System.NullReferenceException”类型异常      

附加信息:未将对象引用设置为对象的实例。

以下任何一种陈述都会导致错误。

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

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

然而,当我使用整数调用Items时,它可以很好地工作。

1 个答案:

答案 0 :(得分: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