2016-04-05 13 views
0

私は、私のプロジェクトの1つに対して複数のディレクトリツリーを作成するために、dotnetbar devcomponents advanced treeviewを使用しました。機能が賢明で、すべてうまくいきます。VB.NETパラメータが無効です

これで、ディレクトリファイルノード(たとえば、pdfファイルの場合はpdfイメージ)にイメージを追加し、アプリケーションを公開しました。アプリケーションは最初に何のマシンでもエラーなく実行されますが、このファイル管理フォームを閉じると(最初のスタートアップフォームであるボタンを備えたコントロールパネルフォームがあります)、ボタンをクリックすると、コントロールパネルとShowDialogメソッドを通じて対応するフォームを表示する - ファイル管理形式は、これらのボタンのうちの1つである)と、再びそれを再オープン - 私は次のエラーを取得する:

parameter_is_not_valid

それは、その後のノードをロードするために失敗し、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は

+0

'アプリケーションは、どのマシンでもエラーなく実行されますが、このファイル管理フォームを閉じてもう一度開くと、エラーが表示されます。このフォームを閉じる/破棄する方法に問題があるようです。フォーム終了のイベントなどであなたが持っているコード? – LarsTech

+0

@LarsTechフォームのクローズは、単にMe.Close()を使用して行われます。他に何も関与していません。私はtreeview.nodes.clear()を最近追加しましたが、それは原因ではありません。何らかの理由で、画像参照の一部を取得できません。時には、atAllDirectoriesツリービュー、atInboxなどの別のツリービューにあることもあります。フォームを開くたびにエラーが発生するツリーの数は完全にランダムです。最初にフォームを開くとエラーは発生しません。 – Nayon

+0

これらのノードをクリアすると何かが得られるかどうかはわかりません。このフォームはどのように作成されますか?このフォームにはいくつの「ノード」がありますか? – LarsTech

答えて

0

私はそれが動作するかどうかを確認するためにGC.Collectを使用しようとした、そして驚くべきことはやりました。悲しいことに、それはあるマシンで動作し、別のマシンでは動作しませんでした。したがって、自分のリソースから画像を直接呼び出す代わりに、ツリービューに添付した画像リストに必要なすべての画像を保存しています。それは魅力のように働いています。

関連する問題