VB.NET参数无效

时间:2016-04-05 15:14:50

标签: vb.net treeview dotnetbar

我使用了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

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

对错误提出任何建议?

编辑1 在关闭表单之前,我清除所有treenodes,然后使用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

1 个答案:

答案 0 :(得分:0)

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