2017-08-21 12 views
0

Je suis en train de coder un programme qui exécutera des fichiers batch s'ils sont sélectionnés par l'utilisateur.VB Afficher les noms de fichiers/dossiers

Chaque lot possède son propre dossier dans un dossier "resources" spécifique.

Je parcourt ce dossier pour créer des cases à cocher et des étiquettes. Tout fonctionne bien, mais je ne veux pas que l'étiquette ait le chemin entier - je veux juste afficher le nom de fichier.

CODE:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    Dim BatchFolder As IEnumerable = Directory.EnumerateFileSystemEntries(appPath & "/resources") 
    Dim totalNumber As Integer = Directory.GetDirectories(appPath & "/resources").Length 
    Dim i As Integer = 1 

    For Each dir As String In BatchFolder 
     Dim Label As New Label() 
     Label.Name = "Lb_" & dir 
     Label.Text = dir & ".bat" 
     Label.AutoSize = True 
     Label.Visible = True 
     Label.Location = New Point(55, 4 + 25 * i) 
     Dim CustomCheckbox As New Bunifu.Framework.UI.BunifuCheckbox() 
     CustomCheckbox.Visible = True 
     CustomCheckbox.Name = "CB_" & dir 
     CustomCheckbox.Checked = False 
     CustomCheckbox.Location = New Point(35, 25 * i) 
     CustomCheckbox.CheckedOnColor = Color.FromArgb(12, 106, 255) 
     Panel5.Controls.Add(Label) 
     Panel5.Controls.Add(CustomCheckbox) 
     i = i + 1 
    Next 
    Label21.Text = totalNumber 
End Sub 

Voici à quoi il ressemble:

enter image description here

+0

Pouvez-vous montrer un exemple de "chemin complet" et "nom de dossier" pour votre cas? –

+0

Salut Siva. Chemin complet signifie qu'il me montre ceci: C: \ Utilisateurs \ xxxxxx \ Documents \ Visual Studio 2017 \ Projets \ xxxxxx Integr8 \ xxxxxx Integr8 \ bin \ Debug \ ressources \ Data_Type_Im – guywithalaptop

+0

Ce que je veux qu'il montre est seulement: Data_Type_Im – guywithalaptop

Répondre

0

Vous pouvez le faire comme ceci:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Dim BatchFolder As IEnumerable = Directory.EnumerateFileSystemEntries(appPath & "\resources") 
    Dim totalNumber As Integer = Directory.GetDirectories(appPath & "\resources").Length 
    Dim i As Integer = 1 

    For Each dir As String In BatchFolder 
     Dim Label As New Label() 
     dir = dir.Substring(dir.LastIndexOf("\") + 1) 
     Label.Name = "Lb_" & dir 
     Label.Text = dir & ".bat" 
     Label.AutoSize = True 
     Label.Visible = True 
     Label.Location = New Point(55, 4 + 25 * i) 
     Dim CustomCheckbox As New Bunifu.Framework.UI.BunifuCheckbox() 
     CustomCheckbox.Visible = True 
     CustomCheckbox.Name = "CB_" & dir 
     CustomCheckbox.Checked = False 
     CustomCheckbox.Location = New Point(35, 25 * i) 
     CustomCheckbox.CheckedOnColor = Color.FromArgb(12, 106, 255) 
     Panel5.Controls.Add(Label) 
     Panel5.Controls.Add(CustomCheckbox) 
     i = i + 1 
    Next 
    Label21.Text = totalNumber 
End Sub 

espère que cela vous aidera :)

+1

Il est préférable d'utiliser [** 'Path.GetFileName()' **] (https://msdn.microsoft.com/en-us/library/system.io. path.getfilename (v = vs.110) .aspx). au lieu de l'extraire vous-même. 'Path.GetFileName()' utilise des méthodes intégrées et vérifie que tout se fait correctement, même sur un autre système/avec un autre séparateur de chemins. Jetez un oeil à la classe [** 'Path' **] (https://msdn.microsoft.com/en-us/library/system.io.path (v = vs.110) .aspx) pour un aperçu de toutes les fonctions existantes. –

+0

@VisualVincent Ouais peut-être, le mien c'est juste des trucs ringard;) .... c'est juste une ligne de code aussi et aucune exception d'erreur je pense, mais vous obtenez un vote up :) –

+0

Cela a fonctionné parfaitement bien! Merci beaucoup! – guywithalaptop