我正在尝试使用以下链接中的代码:
VB-Helper在Visual Basic.NET 中使用图像、快捷键和事件处理程序在运行时创建菜单项
唯一的区别是,我想要一个本地图像,而不是来自我的。资源
我有以下内容:
''Tool 2 displays a string and image.
Dim tool2 As New ToolStripMenuItem("Tool 2", (Image.FromFile("C:testicon.jpg")))
tool2.Name = "mnuToolsTool2"
tool2.ShortcutKeys = (Keys.D2 Or Keys.Control) ' Ctrl+2
AddHandler tool2.Click, AddressOf mnuTool2_Click
ToolStripMenuItem1.DropDownItems.Add(tool2)
我无法重现此"错误"。然而,从给定的文本、代码和链接来看,我的最佳猜测如下:
- 您使用的是64位机器
- 您在
Form.Load
事件中运行代码 - 此方法中出现错误
Private Sub _Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Code...
Throw New Exception("ooops..")
'Code...
End Sub
正如您可能不知道的那样,在64位机器上的Form.Load
中抛出的错误会被系统"吞噬"。
有关更多信息,请阅读SO的这篇文章:为什么表单加载无法捕获异常?
您应该在构造函数中移动代码:
Public Sub New()
Me.InitializeComponent()
'Code goes here...
End Sub
或更改为Form.Shown
事件:
Private Sub _Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
Try
'Code goes here...
Catch ex As Exception
MessageBox.Show(ex.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub