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 :

Changer le style de graphique depuis combobox


Sujet :

VB.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    février 2006
    Messages
    493
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : février 2006
    Messages : 493
    Points : 284
    Points
    284
    Par défaut Changer le style de graphique depuis combobox
    Bonjour

    J'ai besoin de quelques conseils pour compléter ma petite expérience. Mon but est de changer de type de graphique en utilisant un combobox. j'ai toujours l'option d'utilisé un "select case" pour coder mon choix, mais je sais qu'il existe une meilleur méthode pour y arriver

    Pour charger mon combobox je fais comme suis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim wd As Type = GetType(SeriesChartType)
            For Each s In [Enum].GetNames(wd)
                ToolStripComboBox1.Items.Add(s)
            Next
    maintenant j'aimerais récupérer la valeur selectionné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ToolStripComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ToolStripComboBox1.SelectedIndexChanged
            Dim str As String = ToolStripComboBox1.SelectedItem.ToString
     
            Chart1.Series("Prix").ChartType = DataVisualization.Charting.SeriesChartType.Spline
        End Sub
    merci de votre aide

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 2 155
    Points : 4 090
    Points
    4 090

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    février 2006
    Messages
    493
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : février 2006
    Messages : 493
    Points : 284
    Points
    284
    Par défaut Merci Popo
    En fait, j'essai de regrouper la ligne suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim str As String = ToolStripComboBox1.SelectedItem.ToString
     
            Chart1.Series("Prix").ChartType = DataVisualization.Charting.SeriesChartType. & str

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    février 2006
    Messages
    493
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : février 2006
    Messages : 493
    Points : 284
    Points
    284
    Par défaut
    j'ai essayé quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim str As String = ToolStripComboBox1.SelectedItem.ToString
     
            Dim str2 As String = String.Format("{0}.{1}", "DataVisualization.Charting.SeriesChartType", str)
            Chart1.Series("Prix").ChartType = CType(str2, SeriesChartType)
    bon j'avance, hehe!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chart1.Series("Prix").ChartType = CType(ToolStripComboBox1.SelectedIndex, DataVisualization.Charting.SeriesChartType)
    fonctionne mais la question que je me pose comment je m'assure que l'index du "combobox" est le même que l'index du "SeriesChartType" ?

    ce que j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function ReturnIndChartType(ByVal Str As String) As Integer
            Dim Rep As Integer = -1
            Dim wd As Type = GetType(SeriesChartType)
     
            For y As Integer = 0 To [Enum].GetNames(wd).Count - 1
                Console.WriteLine([Enum].GetNames(wd)(y))
                If [Enum].GetNames(wd)(y) = Str Then
                    Rep = y
                End If
            Next
     
            Return Rep
     
        End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chart1.Series("Prix").ChartType = CType(ReturnIndChartType(str), DataVisualization.Charting.SeriesChartType)
    de cette façon j'imagine que si je tri mon combobox avec les types que j'utilise le plus ça devrait fonctionner
    si quelqu'un à une meilleur solution, merci de partager.

    Merci Popo, peu de mot mais fort utile hehe!

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 2 155
    Points : 4 090
    Points
    4 090
    Par défaut
    Tu n'est pas obligé de mettre des chaînes dans une ComboBox.
    Et ton principal problème vient de là.

    Commence par y mettre les valeurs de ton type Enum et ce sera beaucoup plus simple.
    Et ensuite tu n'auras plus qu'à utiliser la valeur de SelectedItem.

    Exemple :
    Sur ma fiche j'ai une combo, un bouton et une groupbox qui contient un panel
    Mon objectif est de docker le panel dans la groupbox en fonction des valeur de l'enum DockStyle.
    Sur le clic du bouton je remplis la combo.
    Et ensuite sur le changement de sélection de ma combo j'applique simplement la valeur qui est déjà dans le bon type.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            ComboBox1.Items.Clear()
            Dim style As Type = GetType(DockStyle)
            For Each value In [Enum].GetValues(style)
                ComboBox1.Items.Add(value)
            Next
        End Sub
     
        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
            Panel1.Dock = ComboBox1.SelectedItem
        End Sub
    End Class
    Tu devrais pouvoir facilement adapter mon code à ton cas.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    février 2006
    Messages
    493
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : février 2006
    Messages : 493
    Points : 284
    Points
    284
    Par défaut
    je sais pas si j'ai mal compris, en résumé voilà ce que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Frm_Graph1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            Dim wd As Type = GetType(SeriesChartType)
            For Each s In [Enum].GetValues(wd)
                ToolStripComboBox1.Items.Add(s)
            Next
     
        End Sub
     
    Private Sub ToolStripComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ToolStripComboBox1.SelectedIndexChanged
            'la valeur attendu est un integer
            Chart1.Series("Prix").ChartType = CType(ToolStripComboBox1.SelectedIndex, DataVisualization.Charting.SeriesChartType)
     
        End Sub

  7. #7
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 2 155
    Points : 4 090
    Points
    4 090
    Par défaut
    Idem pour Chart1.Series("Prix").ChartType, tu pars sur une idée fausse.
    La valeur attendue n'est pas entier mais une valeur d'énumération.
    Et à moins de convertir les Items en entier pour les trier tu n'auras pas de correspondance entre les deux.

    C'est la raison pour laquelle le lien que je t'ai envoyé concerne SelectedItem
    C'est la raison pour laquelle le code que je t'ai présenté utilise également SelectedItem
    Malgré cela, tu continues d'utiliser SelectedIndex
    Donc forcément tu galères...


    Avec la bonne routine, cela donne ceci :
    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
    Private Sub Frm_Graph1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            Dim wd As Type = GetType(SeriesChartType)
            For Each s In [Enum].GetValues(wd)
                ToolStripComboBox1.Items.Add(s)
            Next
     
        End Sub
     
    Private Sub ToolStripComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ToolStripComboBox1.SelectedIndexChanged
            'la valeur attendu N'est PAS un integer 
            'C'est une valeur de l'énumération SeriesChartType
            Chart1.Series("Prix").ChartType = ToolStripComboBox1.SelectedItem
     
        End Sub

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    février 2006
    Messages
    493
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : février 2006
    Messages : 493
    Points : 284
    Points
    284
    Par défaut
    Quand j'essai ton exemple ça dit:

    l'option strict on interdit les conversirons implicites de l'Object en SerieChartType

    finalement j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chart1.Series("Prix").ChartType = CType(ToolStripComboBox1.SelectedItem, DataVisualization.Charting.SeriesChartType)
    et ça fonctionne

    Je viens de voir mon erreur, dans mon premier essai j'avais codé comme suis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ToolStripComboBox1.SelectedItem.tostring
    au lieu de 
    ToolStripComboBox1.SelectedItem
    Si c'est une bonne démarche pour codé je vais gardé ça comme ça

    Merci beaucoup Popo c'est bien apprécié

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

Discussions similaires

  1. Impossible de changer le style depuis JavaScript
    Par gabrielS dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/12/2014, 16h19
  2. [Débutant] ASP MVC : Changer le type d'un graphique depuis une dropdownlist
    Par samsoul33 dans le forum ASP.NET MVC
    Réponses: 3
    Dernier message: 20/02/2014, 11h27
  3. Changer le style en JavaScript [besoin d'aide]
    Par maximenet dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 13/09/2005, 17h21
  4. Changer plusieur style avec des IDs différents?
    Par YanK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/07/2005, 14h33
  5. Changer le style d'une cellule
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2005, 16h18

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