私は、私のプロジェクトの1つに対して複数のディレクトリツリーを作成するために、dotnetbar devcomponents advanced treeviewを使用しました。機能が賢明で、すべてうまくいきます。VB.NETパラメータが無効です
これで、ディレクトリファイルノード(たとえば、pdfファイルの場合はpdfイメージ)にイメージを追加し、アプリケーションを公開しました。アプリケーションは最初に何のマシンでもエラーなく実行されますが、このファイル管理フォームを閉じると(最初のスタートアップフォームであるボタンを備えたコントロールパネルフォームがあります)、ボタンをクリックすると、コントロールパネルとShowDialogメソッドを通じて対応するフォームを表示する - ファイル管理形式は、これらのボタンのうちの1つである)と、再びそれを再オープン - 私は次のエラーを取得する:
それは、その後のノードをロードするために失敗し、Aの後に数回の試行、Microsoft .Net Frameworkウィンドウが表示され、アプリケーションが終了します。
私のリソースファイルから画像を取得します。私は今、原因を把握し、この問題のために解決しようとする2日間を過ごしてきた
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
:エラーが発生したLoadAllSubDirectoriesFilesのコードを参照してください。画像が配置されていて、画像参照[http://blog.lavablast.com/post/2007/11/29/The-Mysterious-Parameter-Is-Not-Valid-Exception.aspx]を取り出すことができず、処分する前に画像を複製することについて話している投稿がありました。 私は処分とクローニングを行ってきましたが、エラーは依然として起きています。他にもいくつか試してみましたが、まだ失敗しています。
何が問題なのですか?
EDIT 1 フォームを閉じる前に、私はすべてのTreeNodeをクリアしてから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
EDIT 2 は私のツリービューは数百のノード、子ノードなどを持っています私のファイル管理フォームの画像を見てください(これは初めて読み込まれたものですが、エラーはありません)。私はクライアントの機密性のためにテキストを隠してしまいましたが、意味があると思います。各画像はノードです。
imgur.com/QQ2FzFVは
'アプリケーションは、どのマシンでもエラーなく実行されますが、このファイル管理フォームを閉じてもう一度開くと、エラーが表示されます。このフォームを閉じる/破棄する方法に問題があるようです。フォーム終了のイベントなどであなたが持っているコード? – LarsTech
@LarsTechフォームのクローズは、単にMe.Close()を使用して行われます。他に何も関与していません。私はtreeview.nodes.clear()を最近追加しましたが、それは原因ではありません。何らかの理由で、画像参照の一部を取得できません。時には、atAllDirectoriesツリービュー、atInboxなどの別のツリービューにあることもあります。フォームを開くたびにエラーが発生するツリーの数は完全にランダムです。最初にフォームを開くとエラーは発生しません。 – Nayon
これらのノードをクリアすると何かが得られるかどうかはわかりません。このフォームはどのように作成されますか?このフォームにはいくつの「ノード」がありますか? – LarsTech