IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Conversion d'un List(Of String) en String possible ?


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Points : 51
    Points
    51
    Par défaut Conversion d'un List(Of String) en String possible ?
    Bonjour à tous, j'ai besoin d'un peu d'aide !

    Donc j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim MyValue As New List(Of KeyValuePair(Of Integer, Double))()
    		Dim Separator As Char = CChar(";")
    		If FilePath IsNot Nothing Then
    			For Each Line As String In System.IO.File.ReadLines(FilePath)
    			    MyValue.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
    			Next
    		Chart.DataContext = MyValue
    		Else
    			FilePath = Nothing
    		End If
    Ceci me permet d'afficher ce qu'il y a dans FilePath (Fichier Csv affiché sous forme de courbe), donc ce qu'il y a dedans est un string, sauf que j'ai dans une autre fénêtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CD.FilePath = CM.ItemsSelected
    et donc ItemsSelected est de type List(Of String), donc FilePath ne reçoit pas de string mais une liste de string... car ItemsSelected reçoit ce que l'utilisateur a sélectionné, ce sont des items dans une listbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			For Each Item As SignalDef In Listbox1.SelectedItems
    				ItemsSelected.Add((Item.SignalPath) + "\" + (Item.SignalName))	
    			Next
    Donc je résume FilePath est une variable globale de type String (Public FilePath As String) et ItemsSelected est aussi une varibale globale de type List(Of String) (Public ItemsSelected As New List(Of String))
    Enfin FilePath reçoit les valeurs de ItemsSelected donc reçoit une liste de string or lui est un string et donc vous me direz pourquoi ne pas déclarer FilePath en List(Of String) ? Parce que dans ma boucle For Each j'utilise ReadAllLines(FilePath) et ReadAllLines n'accepte que des string et pas de List(Of String).
    J'ai pensé a une boucle dans une boucle du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For Each "String" in FilePath 'un truc comme ça...			
                            For Each Line As String In System.IO.File.ReadLines(FilePath)
    			    MyValue.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
    			Next
     Next
    Qu'en pensez vous svp ?? Besoin d'aide ! Posez moi vos questions si vous n'avez pas compris.

  2. #2
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Pourquoi ne déclares-tu pas une autre propriété (ou champs) de type List(Of String):

    Ensuite tu travailles avec ...... ainsi tu conserves :

    ????

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    En fait lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CD.FilePath = CM.ItemsSelected
    c'est un lien que je fais entre CM.xaml.vb et CD.xaml.vb je m'explique :

    Dans ma fenêtre A.xaml.vb j'ai un bouton confirme et lorsque je clique sur confirme alors la liste de string stockée dans la variable ItemsSelected est donnée à la variable FilePath.
    ItemsSelected se situe dans CM.xaml.vb et FilePath dans CD.xaml.vb.

    Donc tu me dis de créer une nouvelle variable SelectedItems de type List(Of String) dans CD.xaml.vb ? Mais je crois que ça change rien car dans ma boucle j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Line As String In System.IO.File.ReadLines(FilePath)
    et ReadAllLines ne prend que des strings. Donc il faut que FilePath soit un string. Or dans ItemsSelected je stock une List(Of String) !

    Je sèche... car mm si je créer une nouvelle variable SelectedItems de type List(Of String) dans CD.xaml.vb il faut bien que j'alimente FilePath ???


    Edit :

    J'ai fait ça mais infructueux vu que ReadAllLines ne peut pas lire plusieurs string... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		Dim MyValue As New List(Of KeyValuePair(Of Integer, Double))()
    		Dim Separator As Char = CChar(";")
    		Dim SelectedItems As String = String.Join(" + ", FilePath) 'j'ai essayé comme séparateur " , " mais ne fonctionne pas non plus...
    		If FilePath IsNot Nothing Then
    			For Each Line As String In System.IO.File.ReadLines(SelectedItems)
    			    MyValue.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
    			Next
    Des idées svp ???!

    Je pense à faire un autre boucle qui dirait de selectionner le 1er string dans SelectedItems, puis le 2nd etc... Quelqu'un voit comment faire ?

  4. #4
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    A ce stade il faut nous donner davantage de contenu car on ne sait pas comment tu fais pour passer tes références entre formulaires WPF :

    - Code complet de CD et CM ?
    - et à quel moment tu ouvres chaque forms, l'action menée donc le code ?

    A mon avis tu as un gros problème de conception dans ton projet (avec autant de form Wpf)...... ou alors tu ne sais pas passer de valeurs entre tes Forms Wpf grâce au constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Class CD
     
        'Tu peux aussi le déclarer en public pour que cette variable soit acessible par la suite durant la durée de vie de l'instance de CD.....
        Private m_Items As List(Of String)
     
        Sub New(Items As List(Of String))
            InitializeComponent()
            m_Items = Items
        End Sub
    End Class
    - Comment déclarer et passer une valeur par le constructeur entre 2 forms

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Dim frmCD As New CD(ListBox1.SelectedItems)
      frmCD.ShowDialog()
    à suivre.....

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    Bonjour Merci pour tes réponses,

    Donc
    - Code complet de CD et CM ?
    - et à quel moment tu ouvres chaque forms, l'action menée donc le code ?
    Malheureusement je ne peux pas donner le code complet (sinon je l'aurai fait directement) vu que je travaille pour une entreprise connue, le code est donc confidentiel.

    Oui il y a pas mal de form, je n'ai pas compté mais minimum une 20aine (peut être 25), c'est un gros logiciel...

    A mon avis tu as un gros problème de conception dans ton projet (avec autant de form Wpf)...... ou alors tu ne sais pas passer de valeurs entre tes Forms Wpf grâce au constructeur :
    Le projet je ne l'ai pas conçu, je suis dessus depuis décembre et le projet existait déjà. Donc c'est compliqué de rentrer dans un projet en cours...

    Donc je vais voir ce que tu m'as donné et je reviens poster !

    Merci encore.

  6. #6
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Je comprends pour la close de confidentialité.
    Cependant, pourquoi ne pas faire un mini projet exemple (simplifié) car en l'état la problématique se situe entre un fichier .csv (données extraites), une ListBox, 2 variables avec 3 form Wpf ? Tu pourrais reproduire la problématique et je pourrais davantage t'aider si tu communiques ce mini-projet (sans données sensibles bien entendu).
    Le fait de faire des mini-projets résous bien des problèmes liés à la conception ou la compréhension.... Oui certes tu perds un peu de tps mais parfois le jeu en vaut la chandelle.

    A voir,

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    (Je signal que je suis débutant, car étudiant (stage))

    la problématique se situe entre un fichier .csv (données extraites), une ListBox, 2 variables avec 3 form Wpf ?
    c'est ça !

    Cependant, pourquoi ne pas faire un mini projet exemple (simplifié)
    J'y ai pensé et j'y pense de plus en plus,
    Oui certes tu perds un peu de tps mais parfois le jeu en vaut la chandelle.
    et tu vises juste, ce qui me freine est le manque de temps malheureusement...

    Je termine ce que je suis en train de faire et si cela ne fonctionne pas alors je n'ai pas d'autre choix que de tenter le mini projet lol.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Public Sub ShowChart()
    		Dim MyValue As New List(Of KeyValuePair(Of Integer, Double))()
    		Dim Separator As Char = CChar(";")
    		If FilePath IsNot Nothing Then
    			For Each item As String In FilePath
    				For Each Line As String In System.IO.File.ReadAllLines(item)
    				    MyValue.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
    				Next
    			Next	
    		Chart.DataContext = MyValue
    		Else
    			FilePath = Nothing
    		End If	
        End Sub
    J'ai rajouté une boucle For Each item As String In FilePath, qui sélectionne chaque string dans FilePath un par un, cela fonctionne pas de prob sauf que je n'ai pas 2 courbes superposées je te montre :

    Courbes 1 (je précise ce sont des courbes bidons inventées par moi mm pour l'exemple) :

    Nom : ab1curves.PNG
Affichages : 518
Taille : 251,5 Ko

    Courbe 2 :

    Nom : ab2curves.PNG
Affichages : 499
Taille : 266,3 Ko

    Affichage des 2 courbes qui normalement sont superposées donc 2 courbes et non pas une :

    Nom : ab3curves.PNG
Affichages : 508
Taille : 269,6 Ko

    Donc je cherche pour le moment à avoir 2 courbes sur le mm plan c'est à dire dans le mm grid.

    Edit :
    Oui en fait je viens de penser, j'ai la variable "MyValue" qui est la mm pour mes 2 courbes (mes 2 strings (un string contient le chemin d'accès à un csv et donc à partir de ce csv je trace une courbe)).
    Il me faudrait peut être une nouvelle variable.

  8. #8
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bon concrètement :

    Ok je crois entrevoir une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim filesPathList As New List(Of String)
    filesPathList.Add("D:\File1.Csv")
    filesPathList.Add("D:\File2.Csv")
    filesPathList.Add("D:\File3.Csv")
     
    Dim filePath As String = string.empty
    If filesPathList.count > 1 Then
       filePath  = String.Join("|", filesPathList.ToArray)
    Elseif filesPathList.count = 1
       filePath = filesPathList(0)
    End If
    Et là du coup ca pourrait coller :

    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
     
     Public Sub ShowChart()
    		Dim MyValue As New List(Of KeyValuePair(Of Integer, Double))()
    		Dim Separator As Char = CChar(";")
    		If FilePath IsNot Nothing Then
                        If FilePath.contains("|") Then
    	                For Each item As String In FilePath.Split("|")
    	                    For Each Line As String In System.IO.File.ReadAllLines(item)
    			       MyValue.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
    			    Next
    		        Next	
                        Else
                            For Each Line As String In System.IO.File.ReadAllLines(FilePath)
    	                    MyValue.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
    			Next
                        End If
    		    Chart.DataContext = MyValue
    		Else
    	            FilePath = Nothing
    		End If	
        End Sub

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    Merci énormément de prendre le temps de me fournir des codes !!!

    Donc j'ai un prob par rapport FilePath.Split("|"), en effet j'ai une erreur ==> Split n'est pas un membre de List(Of String) car FilePath est de type List(Of String) et ce n'est donc pas un string. Cependant j'ai déjà tenté une méthode similaire mais ça n'a pas fonctionné...

    Je reviendrai régulièrement pour montrer mon avancement.

    Merci sincèrement Wallace1 pour le temps que tu prends pour me répondre !

  10. #10
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par ism10 Voir le message
    Merci énormément de prendre le temps de me fournir des codes !!!

    Donc j'ai un prob par rapport FilePath.Split("|"), en effet j'ai une erreur ==> Split n'est pas un membre de List(Of String) car FilePath est de type List(Of String) et ce n'est donc pas un string. Cependant j'ai déjà tenté une méthode similaire mais ça n'a pas fonctionné...
    Tu m'as dis plus haut que FilePath est de type String :

    Donc je résume FilePath est une variable globale de type String (Public FilePath As String)
    ????????????????????????????????????????????
    ??????????????????????????????????????????

    Il me faudrait peut être une nouvelle variable.
    Ce que je te propose depuis le début.....

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    J'ai une idée !

    Je pense à faire ça :
    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
    	Public Sub showChart()
    		Dim MyValue As New List(Of KeyValuePair(Of Integer, Double))()
    		Dim MyValue2 As New List(Of KeyValuePair(Of Integer, Double))()
    		Dim Separator As Char = CChar(";")
    		If FilePath IsNot Nothing Then
    			For Each item As String In FilePath
    				For Each Line As String In System.IO.File.ReadAllLines(item)
    				    MyValue.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
    'ici j'ai envie d'utiliser un if qui dirait :" si il y a plusieurs string dans FilePath, donc plusieurs item, alors la boucle 1 ne prend que le 1er item et passe a la boucle suivante qui prend le 2nd item etc...  sinon elle s’arrête et passe à Chart.DataContext = MyValue et Chart.DataContext = MyValue2
    				Next
    				For Each Line As String In System.IO.File.ReadAllLines(item)
    				    MyValue2.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
    				Next
    			Next	
    		Chart.DataContext = MyValue
    		Chart.DataContext = MyValue2
    		Else
    			FilePath = Nothing
    		End If	
    	End Sub
    Edit :

    Tu m'as dis plus haut que FilePath est de type String :
    Effectivement c’était bien un string au moment ou je t'avais répondu sauf qu'entre temps j'ai modifié le code et maintenant c'est un type List(Of String). Désolé c'est une erreur de ma part de ne pas l'avoir signalé !

    Sinon oui tu avais raison au sujet d'une nouvelle variable. Que dis tu de ce que j'expose un peu plus haut ?

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    Pour l'instant j'ai fait ça mais c'est pas du tt dynamique...

    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
    	Public Sub showChart()
     
    		Dim MyValue As New List(Of KeyValuePair(Of Integer, Double))()
    		Dim MyValue2 As New List(Of KeyValuePair(Of Integer, Double))()
    		Dim Separator As Char = CChar(";")
     
    		If FilePath IsNot Nothing Then
     
    		Dim item As String = FilePath(0)		
    		'For Each item In FilePath
    				For Each Line As String In System.IO.File.ReadAllLines(item)
    				    MyValue.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
    				Next
    		Dim item2 As String = FilePath(1)
    				For Each Line As String In System.IO.File.ReadAllLines(item2)
    				    MyValue2.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
    				Next
    		'Next	
    		Chart.DataContext = MyValue
    		Chart.DataContext = MyValue2
    		Else
    			FilePath = Nothing
    		End If	
    	End Sub
    Si jamais j'ai 3 ou 4 courbes à surperposer je ne vais pas créer plusieurs items... il faut que je trouve un moyen de le faire dynamiquement avec qu'un seul item et au premier tour de boucle item prend le 1er string de la liste, puis au second tour il prend le 2nd string etc...

    By the way ça ne fonctionne pas lol, je n'ai pas d'erreur mais je n'arrive pas a les superposer...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	Public Sub CommandBinding_Confirm (ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
    		CM.Visibility = Visibility.Collapsed
    		CD.Visibility = Visibility.Visible
    		CD.FilePath = CM.ItemsSelected
    		CD.ShowChart()
    	End Sub
    C'est ici que j'appelle ShowChart, devrais-je faire une boucle qui dirait d'appeler ShowChart autant de fois qu'il y a d'items ?? Je ne sais pas...
    On m'a parlé aussi de "serie" comme on peut le voir sur les photos que j'ai posté hier (le poste de 14h57) on voit marqué Serie 1 à droite de la courbe, si j'ai une deuxième courbe superposée il faudrait peut etre qu'il y ait marqué serie 1 et serie 2 ?
    Bref je suis un peu perdu.
    Help !

  13. #13
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Si jamais j'ai 3 ou 4 courbes à surperposer je ne vais pas créer plusieurs items... il faut que je trouve un moyen de le faire dynamiquement avec qu'un seul item et au premier tour de boucle item prend le 1er string de la liste, puis au second tour il prend le 2nd string etc...
    Ca se traduit comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim MyValue As New List(Of KeyValuePair(Of Integer, Double))()
    Dim Separator As Char = CChar(";")
    If FilePath IsNot Nothing Then
        For Each item As String In FilePath
    	For Each Line As String In System.IO.File.ReadAllLines(item)
    	    MyValue.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
             Next
        Next	
    Else
        FilePath = Nothing
    End If	
    Chart.DataContext = MyValue
    Ca ne fonctionne pas comme ca ??

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    Bonjour Wallace1,

    Si cette méthode fonctionne c'est ce que j'avais fait au début mais en fait avec cette méthode Myvalue récupère les 10 points de mon premier item puis les 10 points de mon second item (il faut savoir que FilePath possède 2 string dans sa liste (car je n'ai fait que 2 sélections) donc 2 strings = 2 items).
    Voilà une image afin que tu comprennes ce que je dis :
    MyValue lors du 1er tour de boucle donc avec le 1er item :

    Nom : Myvalue1.PNG
Affichages : 479
Taille : 20,7 Ko

    MyValue lors du 2nd tour de boucle donc 2nd item :

    Nom : Myvalue2.PNG
Affichages : 510
Taille : 39,0 Ko

    Tu vois qu'il y a les 10 pts de l'item 1 et les 10 autres de l'item 2.

    D'où le fait que ShowChart ne me trace qu'une seule courbe. Il aurait fallu 2 variables MyValue la 1ere reçoit les 10 pts de mon 1er item et la seconde variable MyValue2 recoit les 10 pts de mon 2nd item, sauf que ce n'est pas du tt dynamique aussi car il faut autant de variable qu'il y a d'item...

  15. #15
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Je ne sais pas comment fonctionne le DataContext mais si tu le positionne dans le 1er bouclage ca donne quoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim MyValue As New List(Of KeyValuePair(Of Integer, Double))()
    Dim Separator As Char = CChar(";")
    If FilePath IsNot Nothing Then
        For Each item As String In FilePath
    	For Each Line As String In System.IO.File.ReadAllLines(item)
    	    MyValue.Add(New KeyValuePair(Of Integer, Double)(CInt(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))      
             Next
             Chart.DataContext = MyValue
        Next	
    Else
        FilePath = Nothing
    End If
    Le tracé conserve-t-il uniquement la dernière donnée inscrite ?

  16. #16
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    Bonne idée mais je viens de tester et il fonctionne de la même manière.

  17. #17
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Donc dans ce cas il faut utiliser un itemsource
    Et tu ajoutes tes points grâce à chart.series.add
    donc qui dit itemsource dit la mise en place d un bindingsource côté xaml.
    Je vais finir par faire un mini projet....

  18. #18
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    L'xaml est bien chargé !

    Je vais finir par faire un mini projet....
    Je crois aussi haha

    Je reviens ici pour dire ou j'en suis !

    Merci encore Wallace1 pour ton aide !

  19. #19
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Pour tes chart tu utilises le Wpf Toolkit ?

  20. #20
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Points : 51
    Points
    51
    Par défaut
    Oui Toolkit !

    D'ailleurs voici ce que j'ai fait :

    ça c'est ce que j'avais (enfin c'est moi qui l'ai fait lol) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <chartingToolkit:Chart.Series>
    			<chartingToolkit:LineSeries Name="A" DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding}" IsSelectionEnabled="True">
                    <chartingToolkit:LineSeries.DataPointStyle>
                            <Style TargetType="chartingToolkit:LineDataPoint">
                                    <Setter Property="Opacity" Value="0" />
                                    <Setter Property="Background" Value="White" />
                            </Style>
                    </chartingToolkit:LineSeries.DataPointStyle>
    			</chartingToolkit:LineSeries>
    </chartingToolkit:Chart.Series>
    et ensuite j'ai fait un simple copié collé pour la serie 2 :

    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
    			<chartingToolkit:Chart.Series>
    			<chartingToolkit:LineSeries Name="A" DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding}" IsSelectionEnabled="True">
                    <chartingToolkit:LineSeries.DataPointStyle>
                            <Style TargetType="chartingToolkit:LineDataPoint">
                                    <Setter Property="Opacity" Value="0" />
                                    <Setter Property="Background" Value="White" />
                            </Style>
                    </chartingToolkit:LineSeries.DataPointStyle>
    			</chartingToolkit:LineSeries>
    			<chartingToolkit:LineSeries Name="B" DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding}" IsSelectionEnabled="True">
                    <chartingToolkit:LineSeries.DataPointStyle>
                            <Style TargetType="chartingToolkit:LineDataPoint">
                                    <Setter Property="Opacity" Value="0" />
                                    <Setter Property="Background" Value="Red" />
                            </Style>
                    </chartingToolkit:LineSeries.DataPointStyle>
    			</chartingToolkit:LineSeries>
    </chartingToolkit:Chart.Series>
    J'obtiens maintenant ça :

    Nom : ab4Doublecurves.PNG
Affichages : 515
Taille : 285,0 Ko

    ce qui est plutôt pas mal pour l'instant

Discussions similaires

  1. Conversion d'une liste de plusieurs types en une string
    Par Tornade8912 dans le forum Général Python
    Réponses: 2
    Dernier message: 05/07/2016, 15h09
  2. Réponses: 2
    Dernier message: 11/04/2015, 15h56
  3. [D6] Conversion Array of String en String
    Par wizdom dans le forum Delphi
    Réponses: 2
    Dernier message: 23/05/2006, 17h01
  4. conversion d'un type Extended vers un string
    Par matterazzo dans le forum Langage
    Réponses: 2
    Dernier message: 28/10/2005, 19h22
  5. Comparaison d'une liste de string à un string
    Par maxazac dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/10/2005, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo