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

Windows Forms Discussion :

Intervalle sur un contrôle Chart [Débutant]


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Intervalle sur un contrôle Chart
    Bonjour à tous,

    N'ayant pas trouvé de sujet sur la même thématique, je me permet de créer ce sujet.

    Voici mon problème :
    J'importe des donnés à partir d'un DataGridView vers un Chart, et cela à chaque fin d'édition de cellule du DataGridView :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub DGV_pression_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGV_pression.CellEndEdit
            Chart_pression.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Point
            Chart_pression.Series(0).Points.Clear()
            For Count As Integer = 0 To DGV_pression.Rows.Count - 1
                Chart_pression.Series(0).Points.AddXY(DGV_pression.Item(0, Count).Value, DGV_pression.Item(1, Count).Value)
            Next
    End Sub
    Seulement avec ce code, les intervalles ne sont pas respectés. Par exemple, avec les données suivantes issues du DataGridView :
    -400 -300
    0 15
    50 60
    Mon Chart ressemble à cela :
    Nom : chart_form.png
Affichages : 222
Taille : 6,6 Ko
    On peut voir que les intervalles ne sont pas linéaires.

    En effet, si je prends les mêmes données et que je fais mon graphe sous Excel, j'obtient le graphe suivant :
    Nom : chart_excel.png
Affichages : 217
Taille : 4,2 Ko

    C'est la première fois que j'utilise le contrôle Chart, et je n'arrive pas à trouver la propriété qui correspond à mes besoins. J'ai bien suivi ce cours, mais je n'y ai pas trouvé de réponse à mon soucis (mais ce m'as quand même aidé à mieux utiliser ce contrôle).
    Et vous l'aurez compris, je cherche à obtenir le même type de graphique d'excel dans mon Chart. ;)

    Merci d'avance à ceux qui intéresserons à ce topic . :)

    EDIT : Je suis sous VS2013 Express en VB.net

  2. #2
    Candidat au Club
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Un petit up.
    Personne n'as déjà été confronté à ce problème ?

    Je n'arrive toujours pas à obtenir le même graphe que sous excel. Une petite piste ne serai pas de refus.

    Merci à vous

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Ban en faisant un chart par défaut j'obtiens bien ce que tu demandes... (voir PJ)
    Nom : Sans titre.png
Affichages : 223
Taille : 12,0 Ko
    A mon avis reprend depuis le début en forcément suite trop le tuto car je ne sais pas ce que tu as changé dans le ChartArea[N].AxisX certainement

  4. #4
    Candidat au Club
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci lead8209 pour ces précisions. Je suis reparti du début avec un nouveau chart mais le problème persiste.

    Est ce que tu as essayé en rentrant directement les valeurs comme cela ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Chart2.Series(0).Points.AddXY(0, 0)
    Chart2.Series(0).Points.AddXY(10, 10)
    Chart2.Series(0).Points.AddXY(100, 100)
    Car je viens de tester et en effet, cela fonctionne.


    Mais dès que je lui demande d'aller chercher les valeurs dans un DataGridView, il me retourne un chart avec les mauvais intervalles.

    J'ai essayé sans le "for", avec un "select case" mais cette solution ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Chart2.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Point
    Chart2.Series(0).Points.Clear()
    Select Case DGV_pression.RowCount
           Case 3
                    Chart2.Series(0).Points.AddXY(DGV_pression.Item(0, 0).Value, DGV_pression.Item(1, 0).Value)
                    Chart2.Series(0).Points.AddXY(DGV_pression.Item(0, 1).Value, DGV_pression.Item(1, 1).Value)
                    Chart2.Series(0).Points.AddXY(DGV_pression.Item(0, 2).Value, DGV_pression.Item(1, 2).Value)
    End Select
    Je viens de trouver une solution qui fonctionne, mais qui me fait utiliser un nombre non négligeable de variables tampon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Select DGV_pression.RowCount
                Case 3
                    val00 = DGV_pression.Item(0, 0).Value
                    val01 = DGV_pression.Item(0, 1).Value
                    val02 = DGV_pression.Item(0, 2).Value
                    val10 = DGV_pression.Item(1, 0).Value
                    val11 = DGV_pression.Item(1, 1).Value
                    val12 = DGV_pression.Item(1, 2).Value
     
                    Chart2.Series(0).Points.AddXY(val00, val10)
                    Chart2.Series(0).Points.AddXY(val01, val11)
                    Chart2.Series(0).Points.AddXY(val02, val12)
    End Select
    Si tu as une autre piste à me communiquer, je suis prêt à chercher

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Salut,
    bon j'ai cherché un peu (en fait je me suis mis au VB... quelle saleté...)
    Donc j'ai modifié ta fonction pour quelle ajoute dans le chart chaque ligne (sauf la ligne en cours de modification) de ton datagridview en considérant que la colonne 1 c'est X et la colonne 2 c'est Y :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Chart1.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.Point
            Chart1.Series(0).Points.Clear()
            For Each ligne As DataGridViewRow In DataGridView1.Rows
                If (ligne.IsNewRow) Then
                    Return
                End If
                Chart1.Series(0).Points.AddXY(
                   Convert.ToDouble(ligne.Cells(0).Value),
                   Convert.ToDouble(ligne.Cells(1).Value))
            Next
        End Sub
    C'est un problème de cast. Ta fonction AddXY() attend 2 double.
    Toi tu lui passe 2 object. Je vois même pas comment ça peut compiler mais bon... ca ne fonctionnerai pas en C#. Mais bon comme je l'ai dit je ne parle pas vb
    Toujours est-il en transformant tes object en double on a bien le bon chart avec des intervalles corrects.
    Nom : Sans titre.png
Affichages : 197
Taille : 34,4 Ko

    Voila; bon courage A+

  6. #6
    Candidat au Club
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Apprenti ingénieur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup !

    J'aurais du apercevoir ce problème de cast lorsque j'ai testé avec des variables tampon.

    Je ne risque plus de faire la même erreur maintenant.

    Je passe le sujet en résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/07/2006, 12h18
  2. [WebForms]Evénements agissant sur des contrôles
    Par dj_lil dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 14/06/2006, 17h47
  3. [VB6]Questions sur deux contrôles
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 07/05/2006, 20h06
  4. Réponses: 1
    Dernier message: 22/12/2005, 17h33
  5. SetFOcus sur un contrôle d'une autre feuille d'un multipage
    Par MacGeol dans le forum VB 6 et antérieur
    Réponses: 29
    Dernier message: 07/09/2005, 09h37

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