如何将图像从 Form1 分配到 Form2
How to assign a image From Form1 to Form2
我正在通过按钮将图像 deshBoardForm 加载到 CurrentForm。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DeveloperHeaderPictureBox.Image = DeshBoard.HeaderPictureBox.Image
End Sub
但是出现错误:
An unhandled exception of type 'System.NullReferenceException' occurred in Microsoft.VisualBasic.dll
Additional information: Object variable or With block variable not set.
有两种方法可以访问 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
图像通过
访问
- DeshBoard:如果没有实例,创建一个,return
- HeaderPictureBox:使用实例创建了一个新的 PictureBox,是 returned
- 图片:可能为 Null,已 returned(这没问题)
很可能,就没有 运行 次错误而言,此方法实际上更安全,因为如果不存在实例,则会为您创建一个。但这并不总是你想要的。例如,如果在别处使用了显式实例,则不能保证在两个地方都使用相同的实例。
建议不要使用默认表单实例,而是创建一个显式实例。
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 引用的任何 属性 都会引发您遇到的异常。
图像通过
访问
- myDeshBoard:如果没有实例,异常,否则return
- HeaderPictureBox:使用实例创建了一个新的 PictureBox,是 returned
- 图片:可能为 Null,已 returned(这没问题)
我正在通过按钮将图像 deshBoardForm 加载到 CurrentForm。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DeveloperHeaderPictureBox.Image = DeshBoard.HeaderPictureBox.Image
End Sub
但是出现错误:
An unhandled exception of type 'System.NullReferenceException' occurred in Microsoft.VisualBasic.dll Additional information: Object variable or With block variable not set.
有两种方法可以访问 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
图像通过
访问- DeshBoard:如果没有实例,创建一个,return
- HeaderPictureBox:使用实例创建了一个新的 PictureBox,是 returned
- 图片:可能为 Null,已 returned(这没问题)
很可能,就没有 运行 次错误而言,此方法实际上更安全,因为如果不存在实例,则会为您创建一个。但这并不总是你想要的。例如,如果在别处使用了显式实例,则不能保证在两个地方都使用相同的实例。
建议不要使用默认表单实例,而是创建一个显式实例。
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 引用的任何 属性 都会引发您遇到的异常。
图像通过
访问- myDeshBoard:如果没有实例,异常,否则return
- HeaderPictureBox:使用实例创建了一个新的 PictureBox,是 returned
- 图片:可能为 Null,已 returned(这没问题)