我正在通过按钮将图像deshBoardForm加载到CurrentForm。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DeveloperHeaderPictureBox.Image = DeshBoard.HeaderPictureBox.Image
End Sub
但是有一个错误:
Microsoft.VisualBasic.dll中发生了类型为'System.NullReferenceException'的未处理的异常 附加信息:对象变量或With块变量未设置。
答案 0 :(得分:0)
在VB.Net中有两种访问表单的方法。不推荐一个。
不建议使用VB.NET中的默认表单实例(有关说明,请参见this answer)
' Assuming DeshBoard is the name of the class
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DeveloperHeaderPictureBox.Image = DeshBoard.HeaderPictureBox.Image
End Sub
图像通过
访问就没有运行时错误而言,此方法最有可能实际上更安全,因为如果不存在实例,则会为您创建一个实例。但这并不总是您想要的。例如,如果在其他地方使用了显式实例,则不能保证在两个地方都使用相同的实例。
建议不要使用默认的表单实例,而是创建一个显式实例。
Private myDeshBoard As New DeshBoard()
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DeveloperHeaderPictureBox.Image = myDeshBoard.HeaderPictureBox.Image
End Sub
在这种情况下,您将创建一个存在于主窗体内的实例。您可能想在其他地方(例如工厂或单例)创建它,因此可以在任何地方访问同一实例。 (超出此问题的范围)
声明实例时会出现问题,例如:
Private myDeshBoard As DeshBoard() ' notice the missing "New"
然后将永远不会创建该实例,并且访问Null引用的任何属性都将引发您遇到的异常。
图像通过
访问