运行VB.NET窗体代码时出现“Object reference not set to an instance of an object”错误求助
VB.NET空引用错误排查与解决
错误原因
在Form1的Load事件中,代码先执行With Me.Form2,但此时Me.Form2尚未被实例化(值为Nothing)。虽然在With块内后续执行了Me.Form2 = New Form2("Some name"),但With语句绑定的是最初的空引用,因此设置.TopLevel = False时会触发Object reference not set to an instance of an object空引用异常。
解决方案
方案1:先实例化再使用With块
调整代码执行顺序,先完成Form2的实例化,再通过With块操作其属性:
Public Class Form1 Dim Form2 As Form2 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' 先实例化Form2对象 Me.Form2 = New Form2("Some name") ' 对已实例化的对象进行属性设置 With Me.Form2 .TopLevel = False End With End Sub End Class
方案2:直接操作实例化后的对象
如果逻辑简单,可省略With块,直接访问实例的属性:
Public Class Form1 Dim Form2 As Form2 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Form2 = New Form2("Some name") Me.Form2.TopLevel = False End Sub End Class
内容的提问来源于stack exchange,提问作者Peter Rudo
相关产品推荐
相关产品推荐

