Enlever vbCrLf à la fin d'un textbox sans remove

XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012 - 7 nov. 2006 à 23:03
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012 - 8 nov. 2006 à 11:14
Bonjour
Je cherche à améliorer ce code parce qu'il est afreu
Je me demande s'il existe un moyen sans utiliser remove d'enlever un vbCrLf a la fin du textbox, cela me permetrai d'améliorer grandement mon code. Tout commentair sera grandement apprécié.

    Private Overloads Sub ChargementUtilisateurs(ByRef MyListView As ListView, ByRef MyTextBox As TextBox)

        MyTextBox.Text = "Valide"

        For ligne As Integer = 0 To MyListView.Items.Count - 1
            With MyListView.Items.Item(ligne)
                If ligne = MyListView.Items.Count - 1 Then
                    MyTextBox.Text += String.Join("/", New String() {.SubItems(0).Text(), .SubItems(1).Text(), .SubItems(2).Text(), .SubItems(3).Text(), .SubItems(4).Text()})
                Else
                    MyTextBox.Text += String.Join("/", New String() {.SubItems(0).Text(), .SubItems(1).Text(), .SubItems(2).Text(), .SubItems(3).Text(), .SubItems(4).Text()}) & vbCrLf
                End If
            End With
        Next
     
        MyListView.Items.Clear()
    End Sub

8 réponses

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
7 nov. 2006 à 23:34
Salut :

vire la condition If pour la gérée directement ainsi le proccess n'as pas à tester la condition 600 fois s'il y a 600 lignes
Et perso je préfère mettre un & au lieu d'un + pour concaténer des chaines, mais si par contre tu as par exemple 1000 lignes à
concaténé, alors utilise un objet New System.Text.StringBuilder qui lui peux concaténer +100 fois plus vite que une string normal ;)

   Private Overloads Sub ChargementUtilisateurs(ByRef MyListView As ListView, ByRef MyTextBox As TextBox)

        MyTextBox.Text = "Valide"

        For ligne As Integer = 0 To MyListView.Items.Count - 2
            With MyListView.Items.Item(ligne)
                  MyTextBox.Text &= String.Join("/", New String() {.SubItems(0).Text(), .SubItems(1).Text(), .SubItems(2).Text(), .SubItems(3).Text(), .SubItems(4).Text()}) & vbCrLf
            End With
        Next

        MyTextBox.Text += String.Join("/", New String() {.SubItems(0).Text(), .SubItems(1).Text(), .SubItems(2).Text(), .SubItems(3).Text(), .SubItems(4).Text()})
      
        MyListView.Items.Clear()
    End Sub

Chris...
Web : Firstruner
0
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012
8 nov. 2006 à 00:25
Merci pour l'idée ces interessant mais pour ce qui est du changement dans le code que tu propose, il n'est pas posible de cette facons a cause de With MyListView.Items.Item(ligne) mais ca ma donné une bonne idée.
0
SamirAloui Messages postés 53 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 20 mars 2008
8 nov. 2006 à 09:00
Salu

Voila ma une ptt idée

Aprés  "Next"  de ton code original Ajouter la ligne suvante:
MyTextBox1.Text=MyTextBox1.Text.Remove(MyTextBox1.Text.Length - 1)

A b 1 to
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
8 nov. 2006 à 10:51
Désoler XGarden, exacte j'ai fait une bourde, fait en sorte que ton With englobe la boucle et la lignes que j'ai déplacer
Chris...
Web : Firstruner
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012
8 nov. 2006 à 10:54
Tant qu'A faire ca, je vais faire:
MyTextBox.Text.Remove(MyTextBox.Text.Length - 3)
puisque que l'index commence a 0 il faut avoir un -1 et comme vbCrLf est constitué de deux caracteres....
Mais je crois que MyTextBox.Text.TrimEnd(vbCrLf.ToCharArray) devrai fonctionner, maleureusement je dois régler certain bogue avant de savoir si cela fonctionne. Qu'en penser vous?
0
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012
8 nov. 2006 à 10:58
cboulas, ces pas ta journée, tu vient de faire une deuxieme bourde hahaha =:0)
Regarde corectement ce que contient mon With, la valeur du With change a chaque boucle par conséquent je ne peut pas le mettre a l'Extérieur du for =:0)

Voici mon code actuel:

    Private Overloads Sub ChargementUtilisateurs(ByRef MyListView As ListView, ByRef MyTextBox As TextBox)

        ' Entrer la ligne de validation.
        MyTextBox.Text = "Valide" & vbCrLf

        For Each ligne As ListViewItem In MyListView.Items
            With ligne
                MyTextBox.Text += String.Join("/", New String() {.SubItems(0).Text(), .SubItems(1).Text(), .SubItems(2).Text(), .SubItems(3).Text(), .SubItems(4).Text()}) & vbCrLf
            End With
        Next
        ' Enlever le dernier vbCrLf.
        MyTextBox.Text.TrimEnd(vbCrLf.ToCharArray)

        ' Effacer les données du ListView.
        MyListView.Items.Clear()
    End Sub

PS. je me question sur l'utilité réelle de vbCrLf, y a t-il une meilleur méthode pour le retour de ligne dans mn TextBox?
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
8 nov. 2006 à 11:00
Je pense aussi, car j'ai vu les deux code, et ça me semble bizzare ton truc, tu stock dans un puis dans l'autre .... mouais
moi j'aurais préférer utiliser des objets quitte à si tu doit sauvegarder, à le faire en SOAP avec de la serialization.


je n'arrive pas trop à alléger ton code, car ils doit nous manquer quelques lignes au dessus.


Sinon vois pour un objet qui hérite de listviwitem et que tu ajoute 1 fonction qui te retourne un tableau avec tes "/"



Chris...


Web :
Firstruner
0
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012
8 nov. 2006 à 11:14
Je me demande si le ListView a une fonction qui retourne dans un string() la liste des éléments d'une ligne....
Cela me permetrai d''alléger grandement le code.
0
Rejoignez-nous