Bonjour,

Avant de vous explique mon problème, voici la procédure qui le génère :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
    Sub createMenu(ByVal fileMenus As String)
 
        Dim menuPpal As New MenuStrip
        Dim EltMenus() As ToolStripMenuItem
        Dim cNum As New List(Of Integer)
        Dim cTag As New List(Of String)
        Dim lignes() As String = File.ReadAllLines(fileMenus)
        Dim myarray() As String
        Dim numElt As Integer = 0
 
       *** Dim EltMenu1, EltMenu2, EltMenu3, EltMenu11, EltMenu21, EltMenu31, EltMenu111, EltMenu1111 As New ToolStripMenuItem
       *** EltMenus = {EltMenu1, EltMenu2, EltMenu3, EltMenu11, EltMenu21, EltMenu31, EltMenu111, EltMenu1111}
 
        For Each elt In lignes
            myarray = Split(elt, "|")
            Dim tagElt As String = myarray(0)
            Dim titreElt As String = myarray(1)
            Dim nivElt As Integer = tagElt.Length
            Dim myItem As ToolStripMenuItem = EltMenus(numElt)
            cNum.Add(numElt)
            cTag.Add(tagElt)
            Select Case nivElt
                Case 1
                    With myItem
                        .Text = titreElt
                        .Tag = tagElt
                    End With
                    menuPpal.Items.Add(myItem)
                Case Else
                    With myItem
                        .Text = titreElt
                        .Tag = tagElt
                        Dim tagParent As Integer
                        Dim idxParent As Integer
                        tagParent = tagElt.Substring(0, nivElt - 1)
                        For Each num In cNum
                            If cTag.ElementAt(num) = tagParent Then idxParent = num : Exit For
                        Next
                        EltMenus(idxParent).DropDownItems.Add(myItem)
                    End With
            End Select
            numElt += 1
        Next
 
        Me.Controls.Add(menuPpal)
 
    End Sub
fileMenus est un fichier texte qui contient les éléments du menu écrits sous la forme xx|titre (xx étant le tag de l'élément qui permet de savoir à quel parent le raccrocher)
exemples : 11 sera raccroché à l'élément 1, 324 sera raccroché à l'élément 32...etc...

Ce bout de code marche parfaitement quelque soit le nombre de lignes du fichier MAIS le problème ce sont les deux lignes que j'ai marquées *** (les *** ne sont pas dans le vrai code bien sur)

Elles sont là pour dimensionner et déterminer les éléments du menu pour le code. Il y en a donc autant que de lignes dans le fichier.

Avec le petit fichier exemple ce n'est pas un problème mais avec le vrai fichier qui a 111 lignes...

Mon problème est donc de faire en sorte que ces deux lignes ne doivent pas se faire "en dur" et que cette procédure fonctionne quelque soit le fichier.
Il doit être possible je pense de refondre entièrement cette procédure en utilisant les structures ou les classes mais je ne suis pas du tout à l'aise avec çà...

Je vous remercie d'avance pour votre aide.

P.S : J'ai essayé avec un bout de code du style
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
        Dim menuitems As New List(Of MenuItem)
        For i As Integer = 0 To nLignesFichier-1
            Dim elt As New MenuItem
            elt.Text = "eltMenu" & Trim(Str(i))
            menuItems.Add(m)
        Next
mais je ne sais pas l'exploiter