【问题标题】:Object reference error in vb.net [duplicate]vb.net中的对象引用错误[重复]
【发布时间】:2015-12-15 20:17:30
【问题描述】:

这是一个 Windows 窗体应用程序的一部分,它会提示用户“请输入销售订单”,然后会打开一个 CAD 绘图。但是,我在“dsDoc = dsApp.GetActiveDocument()”处遇到错误。谁能帮我解决这个问题?谢谢!

 Private Sub startButton_Click(sender As Object, e As EventArgs) Handles startButton.Click
    Dim salesOrder As Integer
    If Int32.TryParse(txtboxSalesOrder.Text, salesOrder) Then
        If salesOrder > 99999 AndAlso salesOrder <= 999999 Then
            Using process As Process = New Process
                Dim ProcessProperties As New ProcessStartInfo
                ProcessProperties.FileName = "C:\Program Files\Dassault Systemes\DraftSight\bin\DraftSight.exe"
                ProcessProperties.Arguments = ("C:\Users\MyUserName\Desktop\JE5022AA.dwg")
                ProcessProperties.WindowStyle = ProcessWindowStyle.Hidden
                process.Start(ProcessProperties)
            End Using
            Dim dsApp As DraftSight.Application
            Dim application As Object
            dsApp = Nothing
            application = Nothing

            Dim dsDoc As DraftSight.Document
            dsDoc = dsApp.GetActiveDocument()
           'An unhandled exception of type 'System.NullReferenceException' occurred in WindowsApplication2.exe
           'Additional information: Object reference not set to an instance of an object.

            If dsDoc Is Nothing Then
                Return
            End If

【问题讨论】:

  • 好吧,在你有 dsApp = Nothing 之前只有几行,接下来的 3-4 行中没有任何东西初始化它,所以当你尝试从中 GetActiveDocument() 时,dsApp 直到 Nothing/null

标签: vb.net winforms visual-studio


【解决方案1】:

问题来了:

dsApp = Nothing
' ...
dsDoc = dsApp.GetActiveDocument()

在这种情况下,对象引用是变量dsApp。当它说它没有设置为对象的实例时,这意味着该变量为空(即Nothing)。显然,由于您将变量显式设置为Nothing,因此它将始终为空,因此可以保证抛出NullReferenceException

要修复它,您需要将dsApp 设置为指向适当的DraftSight.Application 对象,而不是将其设置为Nothing

【讨论】:

  • 这是从早些时候录制的宏中自动生成的。你对“dsApp”应该设置什么有什么建议吗?谢谢!
  • 因为我不确定DraftSight.Application 是什么,所以我不能说。我假设这是从某个第三方库导入的类型。它可能假设您已经在某处引用了当前DraftSight.Application 对象,您只需设置dsApp 以指向该对象。但由于我从未使用或听说过该库,这只是一个猜测。
  • 您可以尝试将之前的行更改为 Dim dsApp As New DraftSight.Application(并删除将其设置为 Nothing 的行)但是,是的,我们不知道您在做什么或正在使用什么
  • 您可以咨询DraftSight SDK Documentation。我无法为您阅读他们的文档,因为它需要有效的客户端登录。
  • @Bjørn-RogerKringsjå 啊,就是这样:) 好电话。真希望我能想到用 Dupe-Hammer 来回答那个规范的答案……哦,好吧。
猜你喜欢
  • 1970-01-01
  • 2013-08-22
  • 2012-02-28
  • 2016-09-10
  • 2015-12-28
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
相关资源
最近更新 更多