[英]VB.NET Parameter is not valid
我已經使用dotnetbar devcomponents高級treeview為我的一個項目創建了多個目錄樹。 在功能方面,一切正常。
現在,我已將圖像添加到目錄文件節點(例如pdf圖像(如果是pdf文件))並發布了該應用程序。 該應用程序首次在任何計算機上運行都沒有任何錯誤,但是一旦我關閉了此文件管理表單(我有一個帶有按鈕的控制面板表單,該按鈕是初始啟動表單。這些按鈕會將我帶到其他表單。單擊按鈕時,它將隱藏控制面板並通過showdialog顯示相應的表單-“文件管理”表單是這些按鈕之一),然后再次將其重新打開-我收到以下錯誤:
然后,它無法加載節點,並且經過幾次嘗試,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關閉窗體之前,我清除所有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
我曾嘗試使用GC.Collect來查看它是否有效,並且令人驚訝。 可悲的是,它在一台機器上工作,而在另一台機器上卻沒有。 因此,不是將所有必需的圖像直接從資源中調用,而是將所有必需的圖像存儲在已附加到樹形視圖的圖像列表中。 它就像一種魅力。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.