Параметр VB.NET недействителен
Я использовал расширенный древовидный интерфейс dotnetbar devcomponents для создания нескольких деревьев каталогов для одного из моих проектов. Функциональность мудрая, все работает нормально.
Теперь я добавил изображения в узлы файлов каталога (например, изображение 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 Перед закрытием формы я очищаю все триоды и затем использую 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 ответ
Я пытался использовать GC.Collect, чтобы увидеть, работает ли он, и удивительно, что это сработало. К сожалению, он работал на одной машине и не работал на другой. Поэтому вместо того, чтобы вызывать изображения непосредственно из моих ресурсов, я сохранил все необходимые изображения в списке изображений, который я прикрепил к своим древовидным представлениям. Это работает как шарм.