Vb.net editer chaque ligne ^^

Résolu
Bonjour,
je suis débutant en vb.net , j'ai réussi a charger le contenue d'un fichier text dans un listbox , je cherche a éditer chaque ligne (item) de cette listbox affin d'ajouter : " | exemple [numeros]" (sans "") .

esque c'est possible ? si oui comment ?

merci d'avance .

5 réponses

  1. Bonjour relax,

    La boucle que tu propose [ For Each item In ListBox1.Items ]
    ne te permettra pas d'obtenir l'indice de l'élément sur lequel
    tu veux opérer une édition.

    L'instruction [ Dim Indice As Int32 = Me.ListBox1.SelectedIndex ]
    ne sera pas valide puisque tu ne sélectionne pas un élément à
    chaque tour de la boucle. L'instruction [ For Each item In ListBox1.Items ]
    est plus une instruction d'énumération que de sélection.

    ... et l'instruction [ Me.ListBox1.Items.Insert(Indice, strEntree) ]
    nécessite l'indice de sélection pour insérer au bon endroit !

    Essai comme ceci ...

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
    	Dim strEntree As String = String.Empty
    	Dim Indice As Int32 = (Me.lbx_Process.Items.Count - 1)
    
    	For Boucle As Int32 = 0 To Indice
    		strEntree = Me.lbx_Process.Items(Boucle).ToString
    		strEntree = InputBox("Donnée à modifier :", "Édition", strEntree)
    
    		Me.lbx_Process.Items.RemoveAt(Indice)
    		Me.lbx_Process.Items.Insert(Indice, strEntree)
    	Next
    
    End Sub
    


    Cdt

    Lupin
    1. Bonjour,

      Exemple type dans un boucle (sur commande d'un bouton) ...

      Private Sub btn_Edition_Click(ByVal sender As System.Object, _  
                                             ByVal e As System.EventArgs) _  
                                             Handles btn_Edition.Click  
      
       If (Me.lbx_Process.Items.Count > 0) Then  
          Dim Entree As String = String.Empty  
          Dim Indice As Int32 = (Me.lbx_Process.Items.Count - 1)  
          For Boucle As Int32 = 0 To Indice  
             Entree = Me.lbx_Process.Items(Boucle).ToString  
             Entree = InputBox("Donnée à modifier :", "Édition", Entree)  
             Me.lbx_Process.Items.RemoveAt(Boucle)  
             Me.lbx_Process.Items.Insert(Boucle, Entree)  
          Next  
       End If  
      
      End Sub  
      


      Cdt

      Lupin
      1. salut ,
        je l'ai modif et il fonctionne :p , merci beaucoup !
    2. Contributeur
      Bonjour,
      Place l'exemple de Lupin dans une boucle au lieu de l'évènement Dclick et ça va le faire.
      A+
      1. Ok j'essaye
      2. ça n'a pas fonctionné :/
      3. Contributeur
        ça n'a pas fonctionné :/
        Ça ne veux rien dire...
        Montre le code que tu en a tiré.
      4. voial
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim strEntree As String = String.Empty

        For Each item In ListBox1.Items
        Dim Indice As Int32 = Me.ListBox1.SelectedIndex

        strEntree = Me.ListBox1.SelectedItem.ToString
        strEntree = "Donnée à modifier :"

        Me.ListBox1.Items.RemoveAt(Indice)
        Me.ListBox1.Items.Insert(Indice, strEntree)
        Next

        End Sub
      5. Contributeur
        Ca devient.... pénible
        Tu pourrais au moins regarder ce que Lupin te propose, ce serait la moindre des politesse.
        Et de continuer avec lui vu que c'est lui qui t'a aiguillé.
    3. re:

      Tes deux objets, le StreamReader (open) et le TextWriter (SW)
      pointent sur le même fichier, c'est impossible !

      Lupin
      1. Bonjour,

        Tu ne peux le faire directement ...

        Il faut passer indirectement ...

        exemple par double-click de la souris sur l'item :

        Private Sub lbx_Morceau_MouseDoubleClick(ByVal sender As Object, _
        					 ByVal e As System.Windows.Forms.MouseEventArgs) _
        					 Handles lbx_Morceau.MouseDoubleClick
        
        	Dim strEntree As String = String.Empty
        
        	Dim Indice As Int32 = Me.lbx_Morceau.SelectedIndex
        
        	strEntree = Me.lbx_Morceau.SelectedItem.ToString
        	strEntree = InputBox("Donnée à modifier :", "Édition", strEntree)
        
        	Me.lbx_Morceau.Items.RemoveAt(Indice)
        	Me.lbx_Morceau.Items.Insert(Indice, strEntree)
        
        End Sub
        


        Cdt

        Lupin
        1. Merci boucoup lupin pour ta réponse .

          je voudrais que quand je clique sur le boutton , ça edite chaque ligne séparélent . , sans que j'intervien .

          j'ai essayez ce code mais ça marche pas :/

           Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
                  Try
                      
                      Dim open As New IO.StreamReader(Application.StartupPath & "\DATA\fichier.txt")
                      While (open.Peek() > -1)
                          Dim SW As IO.TextWriter
                          SW = IO.File.AppendText(Application.StartupPath & "\DATA\fichier.txt")
          
                          SW.WriteLine(" |  exemple")
          
          
          
                      End While
                      open.Close()
          
                  Catch
                  End Try
                 
                  'ListBox1.Items.Clear()
          
          
              End Sub