0

我使用 dotnetbar devcomponents 高级树视图为我的一个项目创建了多个目录树。功能方面,一切正常。

我现在已将图像添加到目录文件节点(例如,如果是 pdf 文件,则为 pdf 图像)并发布应用程序。该应用程序第一次在任何机器上运行时没有任何错误,但是一旦我关闭此文件管理表单(我有一个带有按钮的控制面板表单,这是初始启动表单。这些按钮将我带到其他表单。单击按钮时,它会隐藏控制面板并通过 showdialog 显示相应的表单 - 文件管理表单是这些按钮之一)并再次重新打开它 - 我收到以下错误:

parameter_is_not_valid

然后它无法加载节点,经过几次尝试,Microsoft .Net Framework 窗口出现并结束应用程序。

我从我的资源文件中获取图像。请查看发生错误的 LoadAllSubDirectoriesFiles 的代码:

    Private Sub LoadAllSubDirectoriesFiles(ByVal uParent As DevComponents.AdvTree.Node)
    ' Initialise Error Checking
    Dim uStackframe As New Diagnostics.StackFrame
    Dim ufile As IO.FileInfo = Nothing
    Try

        If uParent.Name.Length <> 248 Then

            Dim files As IO.FileInfo() = uParent.Tag.GetFiles()

            For Each file As IO.FileInfo In files
                If (Not file.Attributes.ToString.Contains("Hidden")) Then
                    Dim uNode As DevComponents.AdvTree.Node = New DevComponents.AdvTree.Node()
                    uNode.Tag = file
                    uNode.Name = file.FullName.ToLower
                    uNode.Text = file.Name
                    If file.Extension = ".msg" Then
                        uNode.Image = My.Resources.Resources.Mail3
                    ElseIf file.Extension = ".txt" Then
                        uNode.Image = My.Resources.Resources.Document
                    ElseIf file.Extension = ".pdf" Then
                        uNode.Image = My.Resources.Resources.pdf
                    ElseIf file.Extension = ".doc" OrElse file.Extension = ".docx" Then
                        uNode.Image = My.Resources.Resources.doc
                    ElseIf file.Extension = ".xlsx" Then
                        uNode.Image = My.Resources.Resources.excel
                    ElseIf file.Extension = ".pub" Then
                        uNode.Image = My.Resources.Resources.publisher
                    ElseIf file.Extension = ".pptx" Then
                        uNode.Image = My.Resources.Resources.powerpoint
                    ElseIf file.Extension = ".bmp" OrElse file.Extension = ".png" OrElse file.Extension = ".jpg" OrElse file.Extension = ".gif" OrElse file.Extension = ".tif" Then
                        uNode.Image = My.Resources.Resources.bitmap_image
                    ElseIf file.Extension = ".zip" OrElse file.Extension = ".rar" Then
                        uNode.Image = My.Resources.Resources.zip
                    Else
                        uNode.Image = My.Resources.Resources.unknown
                    End If
                    uNode.DragDropEnabled = True
                    uParent.Nodes.Add(uNode)
                End If
            Next
        End If
    Catch ex As Exception
        ' Catch Error
        If Err.Number <> 0 Then
            WriteAuditLogRecord(uStackframe.GetMethod.DeclaringType.FullName, uStackframe.GetMethod.Name.ToString, "Error", ex.Message & vbCrLf & vbCrLf & ex.StackTrace, 0)
            MsgBox("System Error Ref: " & sAuditID & vbCrLf & uStackframe.GetMethod.DeclaringType.FullName & " / " & uStackframe.GetMethod.Name.ToString & vbCrLf & ex.Message & vbCrLf & vbCrLf & ex.StackTrace & Chr(13) & sErrDescription & vbCrLf & vbCrLf & "Press Control + C to copy this error report", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Business Management System - Unexepected Error Ref: " & sAuditID)
        End If

    Finally
        ' CleanUp

    End Try

End Sub

我现在花了 2 天时间试图找出原因并解决这个问题。有些帖子谈到正在处理的图像并且无法检索图像参考 [ http://blog.lavablast.com/post/2007/11/29/The-Mysterious-Parameter-Is-Not-Valid- Exception.aspx ] ,在配置之前克隆图像等。我已经尝试过配置和克隆,但错误仍然存​​在。尝试了其他几件事,但仍然不成功。

有什么错误的建议吗?

编辑 1 在关闭表单之前,我清除所有树节点,然后使用 Me.Close()

    Private Sub tsbClose_Click(sender As Object, e As EventArgs) Handles tsbClose.Click
    atRootFolder.Nodes.Clear()
    atAllDirectories.Nodes.Clear()
    atScannedFiles.Nodes.Clear()
    atFiles.Nodes.Clear()
    atInbox.Nodes.Clear()
    atSent.Nodes.Clear()
    Me.Close()
End Sub

编辑 2 我的树视图有数百个节点、子节点等。请查看我的文件管理表单的图像(这是第一次加载,没有错误)由于客户机密,我不得不隐藏文本,但我希望它说得通。每个图像都是一个节点。

imgur.com/QQ2FzFV

4

1 回答 1

0

我曾尝试使用 GC.Collect 来查看它是否有效,但令人惊讶的是它确实有效。可悲的是,它在一台机器上工作,而在另一台机器上却没有。因此,我没有直接从我的资源中调用图像,而是将所有需要的图像存储在我附加到树视图的图像列表中。它就像一个魅力。

于 2016-04-22T09:48:40.590 回答