2015-08-03 4 views
0

J'essaie de comprendre la raison simple pour laquelle le ListBox ne remplit pas, le but est de trouver des fichiers dans un répertoire. Les fichiers ressemblent généralement à FY12 Month02 BMD Mold Line.pdf et j'ai donc créé trois zones de texte pour l'année, le mois et le type. Je voudrais également savoir quelle serait la meilleure façon d'utiliser CONTAINS pour trois champs de recherche pour un nom de fichier?Remplissage de ListBox à partir des champs de recherche de zone de texte

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 

    Dim year, month, type As String 
    year = InternalAuditYear.Text 
    month = InternalAuditMonth.Text 
    type = InternalAuditType.Text 

    Dim FileList As String() = Directory.GetFiles("X:\Internal audits\", ".pdf", SearchOption.AllDirectories) 
    For Each foundFile As String In FileList 
     Dim GOTCHA As String = Path.GetFileName(foundFile) 
     ListBox1.Items.Add(GOTCHA) 
    Next 
End Sub 
+0

Étant donné le code que vous avez fourni, la seule raison que je peux voir pour aucun élément de liste est que FileList est vide. Avez-vous vérifié que vous obtenez des résultats? –

+0

Je l'ai débogué plusieurs fois, mais j'ai découvert qu'il me manquait le symbole de l'astérisque sur .pdf. Devrait être "* .pdf" –

Répondre

1

La raison pour laquelle votre ListBox ne se remplit pas est probablement parce que Directory.GetFiles() ne renvoie aucun résultat. Cela est dû au paramètre searchPattern ".pdf" il a besoin d'un caractère générique (*).

Essayez ...

Directory.GetFiles("X:\Internal audits\", "*.pdf", SearchOption.AllDirectories) 

Cependant, cela dépend aussi qu'il ya des fichiers qui se terminent par .pdf.

+0

J'adore coder, mais je déteste quand je me casse les cheveux pour quelque chose d'aussi simple qu'un repère d'un caractère * GRR. Merci. –

0

pour la séparation de nom de fichier, vous pouvez utiliser un simple .split (» «) que vous pouvez tester sur arraySize avant de l'utiliser ... doit être quelque chose comme ça (n `ont VB.Net droit à portée de main maintenant):

Dim fileName As String = "FY12 Month02 BMD Mold Line.pdf" 
    Dim splitFileName() As String = fileName.Split(New Char() {" "c}) 

    If (splitFileName.Length > 4) Then 
     'OK, proper file name 
     year = splitFileName(1) 
     month = splitFileName(2) 
     type = splitFileName(3) 
    End If 

Votre autre problème: voir si l'élément de liste est là lors du débogage. Si oui, essayez d'actualiser manuellement le formulaire. Sinon, vous n'avez pas trouvé le bon chemin. (Peut-être que le lecteur X: n'est pas disponible lors de l'exécution du programme)

+0

type aura seulement "BMD" et non "BMD Mold Line" – Shar1er80

+0

Je pense qu'il sera très facile de modifier le code pour répondre à vos besoins (comme type = splitFileName (3) + "" + splitFileName (4) + "" + splitFileName (5)) –