2016-04-05 49 views
0

Projelerimden biri için birden çok dizin ağacı oluşturmak için dotnetbar devcomponents gelişmiş treeview kullandım. İşlevselliği bilge, her şey yolunda.VB.NET Parametre geçerli değil

Artık dizin dosya düğümlerine (ör. Pdf dosyası ise pdf dosyası) resim ekledim ve uygulamayı yayınladım. Uygulama herhangi bir makinede ilk defa hata yapmadan çalışır, ancak bu Dosya Yönetimi formunu kapattıktan sonra (ilk başlangıç ​​formu olan düğmelerle birlikte bir kontrol paneli formum var. Düğmeler beni diğer formlara götürür. Düğme tıklandığında, gizler. kontrol paneli ve ShowDialog yoluyla gelen form görüntüler - Dosya Yönetimi formunun bu düğmelerden biri) ve tekrar açmayı - aşağıdaki hatayı alıyorum:

parameter_is_not_valid

Daha sonra düğümlerin yüklenmemesi

ve sonra Bir çift denemede, Microsoft .Net Framework penceresi görünür ve uygulamayı sonlandırır.

Resim dosyalarını kaynak dosyamdan alıyorum. Hatanın oluştuğu LoadAllSubDirectoriesFiles için kod bakın: Ben sebebini bulabilir ve bu sorun için tamir etmeye çalışıyor şimdi 2 gün geçirdim

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 

. İmha edilen görüntü hakkında konuşulan ve görüntü referansını alamayan mesajlar (http://blog.lavablast.com/post/2007/11/29/The-Mysterious-Parameter-Is-Not-Valid-Exception.aspx), imha edilmeden önce görüntüyü klonlama vb. Vardı. Bir atma ve klonlama işlemi yaptım ama hata hala geçerli. Başka şeyleri deniyordum ama hala başarısız.

Sorun olan herhangi bir öneriniz var mı?

formu kapatmadan önce DÜZENLEME 1 , tüm TreeNodes temizleyip sonra 2 Benim treeviews vb düğümler yüzlerce çocuk düğümleri var 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 

DÜZENLEME kullanmak Lütfen dosya yönetimi formumun görüntüsüne bakın (bu, ilk kez yüklendi, hata yok) İstemci gizliliği nedeniyle metni gizlemek zorunda kaldım, ama umarım bu mantıklıdır. Her görüntü bir düğümdür.

imgur.com/QQ2FzFV

+0

'Uygulama, herhangi bir makinede ilk kez hata olmadan çalışır, ancak bir kez bu Dosya Yönetimi formunu kapatıp tekrar açtığımda - hatayı alıyorum.' Belki de bu formu nasıl kapattığınız/imha ettiğinizle ilgili bir soruna benziyor. Form kapatma etkinliğinde bulunan herhangi bir kod, vb. – LarsTech

+0

@LarsTech Form kapanışı sadece Me.Close() kullanılarak yapılır. Başka bir şey yok. Treeview.nodes.clear() 'ı yakın zamanda ekledim, ama bu sebep değil. Bazı sebeplerden dolayı görüntü referanslarından bazılarını alamıyor. Bazen atAllDirectories ağaç görünümünde, diğer zamanlarda atInbox'ta vb. Her zaman formun açılmasından sonra kaç tane ağacın hata oluştuğu tamamen rastgele. Lütfen ilk kez formu açtığımda hata olmadığını unutmayın. – Nayon

+0

Bu düğümlerin temizlenmesinin size bir şey getirip getirmediğini bilmiyorum. Bu form nasıl oluşturulur? Bu formda kaç tane "düğüm" var? – LarsTech

cevap

0

Ben çalışıp çalışmadığını görmek için GC.Collect kullanmaya çalışmış ve şaşırtıcı yaptım. Ne yazık ki, bir makinede çalıştı ve başka birinde yoktu. Bu nedenle, görüntüleri doğrudan kaynaklardan çağırmak yerine, gerekli tüm görüntüleri ağaç görünümlerime eklediğim bir görüntü listesinde sakladım. Bir çekicilik gibi çalışıyor.