XGuarden
Messages postés259Date d'inscriptiondimanche 14 juillet 2002StatutMembreDernière intervention17 août 2012
-
7 nov. 2006 à 23:03
XGuarden
Messages postés259Date d'inscriptiondimanche 14 juillet 2002StatutMembreDernière intervention17 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
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 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()})
XGuarden
Messages postés259Date d'inscriptiondimanche 14 juillet 2002StatutMembreDernière intervention17 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.
XGuarden
Messages postés259Date d'inscriptiondimanche 14 juillet 2002StatutMembreDernière intervention17 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?
XGuarden
Messages postés259Date d'inscriptiondimanche 14 juillet 2002StatutMembreDernière intervention17 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?
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 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 "/"
XGuarden
Messages postés259Date d'inscriptiondimanche 14 juillet 2002StatutMembreDernière intervention17 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.