VB.NET 参数无效
VB.NET Parameter is not valid
我已经使用 dotnetbar devcomponents advanced treeview 为我的一个项目创建了多个目录树。功能方面,一切正常。
我现在已经将图像添加到目录文件节点(例如,如果是 pdf 文件,则为 pdf 图像)并发布了应用程序。该应用程序第一次在任何机器上运行时没有任何错误,但是一旦我关闭此文件管理表单(我有一个带有按钮的控制面板表单,这是初始启动表单。按钮将我带到其他表单。单击按钮时,它隐藏控制面板并通过 showdialog 显示相应的表单 - 文件管理表单是这些按钮之一)并再次重新打开它 - 我收到以下错误:
然后加载节点失败,尝试几次后,出现 Microsoft .Net Framework window 并结束应用程序。
我从资源文件中获取图像。请看出现错误的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
我曾尝试使用 GC.Collect 来查看它是否有效,结果令人惊讶。可悲的是它在一台机器上工作而在另一台机器上没有。因此,我没有直接从我的资源中调用图像,而是将所有需要的图像存储在一个图像列表中,并将其附加到我的树视图中。它就像一个魅力。
我已经使用 dotnetbar devcomponents advanced treeview 为我的一个项目创建了多个目录树。功能方面,一切正常。
我现在已经将图像添加到目录文件节点(例如,如果是 pdf 文件,则为 pdf 图像)并发布了应用程序。该应用程序第一次在任何机器上运行时没有任何错误,但是一旦我关闭此文件管理表单(我有一个带有按钮的控制面板表单,这是初始启动表单。按钮将我带到其他表单。单击按钮时,它隐藏控制面板并通过 showdialog 显示相应的表单 - 文件管理表单是这些按钮之一)并再次重新打开它 - 我收到以下错误:
然后加载节点失败,尝试几次后,出现 Microsoft .Net Framework window 并结束应用程序。
我从资源文件中获取图像。请看出现错误的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
我曾尝试使用 GC.Collect 来查看它是否有效,结果令人惊讶。可悲的是它在一台机器上工作而在另一台机器上没有。因此,我没有直接从我的资源中调用图像,而是将所有需要的图像存储在一个图像列表中,并将其附加到我的树视图中。它就像一个魅力。