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 texte de combo box avec des variables


Sujet :

VB.NET

  1. #21
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    Bien bien ...

    Puisque tu as trouvé le problème qui t'encombrait, je te laisse ...

    Mais j'insiste sur un détail. L'usage des RadioButton pour cette gestion est un "supplice" intellectuel, en tout cas avec l'événement CheckChanged.
    Un seul CheckBox (Coché = je passe la valeur à l'autre page, Non coché = je NE passe PAS la valeur à l'autre page) doit suffire.
    Selon ce raisonnement, un seul RadioButton doit suffire également.

    S'il y a plusieurs RadioButton, il y a "supplice", parce que dans ton code tu as besoin d'un seul événement pour t'indiquer s'il faut passer ou non le texte du Combo.
    Or avec plusieurs RadioButton, tu as toujours 2 événements CheckChanged et nous nous y mêlons les pieds. Quand tu Check un Radio, il produit d'abord la Dé-Check du précédent avant son propre Check. Il y a donc 2 CheckChanged.
    Cet inconvénient n'existe pas avec l'événement Click, par exemple.

    ...
    Après avoir fait le point avec les utilisateurs, il faut maintenant 8 pages "donc 8 lots de variables", c'est maintenant que le casse tête commence....

  2. #22
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Si le passage d'une page à l'autre se fait par le click de l'onglet, ce click d'onglet désigne la page cible, et donc aussi le Combo cible.
    Un indicateur quelconque (RadioButton ou autre) devrait seulement informer s'il faut transférer le texte du Combo. On a alors une seule donnée à passer d'un seul Combo vers un seul autre. Vu ainsi, quel que soit le nombre de cibles possibles, une seule existe au moment du click d'un onglet. Une seule variable pour tout est déjà beaucoup.
    ....
    .

  3. #23
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 512
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 512
    Par défaut
    Je continue de penser que si n pages, le mieux est d'utiliser des TabPages ou des panels avec chacun leurs contrôles. et si les pages sont identiques en terme de présentation, c'est l'occasion d'en faire un contrôle utilisateur à proprement parlé

  4. #24
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 512
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 512
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    @umfred
    N'empêche que tu entres dans plusieurs procédures événementielles là où une seule devrait suffire. Ce n'est pas un faux problème pour tout le monde et c'est toujours un traitement redondant.
    ...
    pas obligatoirement, tous les événements peuvent se dirigés vers la même fonction, et avec la "magie" du sender savoir quel contrôle est l'appelant que tu gères à coup de Select Case par exemple.

  5. #25
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    @umfred
    C'est bien la magie dont tu parles que j'ai utilisé dans mon code CHKBox_Click envoyé hier. Mais avec l'événement CheclChanged, l'exécution passera 2 fois dans la procédure alors su'elle passerait seulement 1 fois avec l'événement Click.

    Je sens bien que nous ne serons pas d'accord sur ce détail mais peu importe, les 2 approches se valent pour qui peut les maitriser.

    Tu parles d'utilser des TabPages. C'est une excellente idée, je croyais que c'était déjà de cela qu'il s'agissait. Pourquoi n'envoie tu pas un petit projet de tests ?

  6. #26
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bon, voici un projet de test dans lequel j'utilise des TabPages comme le suggère Umfred, et bien entendu fidèle à mes convictions, un CheckBox et une seule variable de passage.
    Le nombre de TabPage est sans importance, simplement le code s'allongera. Il conviendrait de passer à une écriture moins didactique (et donc moins lisible) de l'algorithme.
    Une petite vidéo pour voir comment ça marche : TempusVideo.zip
    Et le projet de test pour t'amuser un peu : Tempus2.zip
    ...

  7. #27
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 512
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 512
    Par défaut
    Avec des tabpages, plus besoin d'avoir de checkbox/radiobutton pour changer de page.

  8. #28
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    Bon, voici un projet de test dans lequel j'utilise des TabPages comme le suggère Umfred, et bien entendu fidèle à mes convictions, un CheckBox et une seule variable de passage.
    Le nombre de TabPage est sans importance, simplement le code s'allongera. Il conviendrait de passer à une écriture moins didactique (et donc moins lisible) de l'algorithme.
    Une petite vidéo pour voir comment ça marche : TempusVideo.zip
    Et le projet de test pour t'amuser un peu : Tempus2.zip
    ...
    Merci pour ce nouveau code, le fait de passer avec des TabPages règle effectivement le problème, j'ai néanmoins une erreur lorsque je reprend le code dans mon appli avec sender.Name "Dim CHK As String = sender.Name option strict on rejette toute liaison tardive."

  9. #29
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Pour faire vite, tu peux remplacer la Procédure Private Sub CHKBox_Click(sender As Object, e As EventArgs) Handles CHK1.Click, CHK2.Click, CHK3.Clickpar les 3 suivantes :
    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
    25
    26
        Private Sub CHK1_Click(sender As Object, e As EventArgs) Handles CHK1.Click
            ' Nous sommes en Page 1
            If CHK1.Checked Then
                TextAPasser = Combo1.Text
            Else
                TextAPasser = String.Empty
            End If
        End Sub
     
        Private Sub CHK2_Click(sender As Object, e As EventArgs) Handles CHK2.Click
            ' Nous sommes en Page 2
            If CHK2.Checked Then
                TextAPasser = Combo2.Text
            Else
                TextAPasser = String.Empty
            End If
        End Sub
     
        Private Sub CHK3_Click(sender As Object, e As EventArgs) Handles CHK3.Click
            ' Nous sommes en Page 3
            If CHK3.Checked Then
                TextAPasser = Combo3.Text
            Else
                TextAPasser = String.Empty
            End If
        End Sub
    C'est le même code mais en 3 procédures événementielles au lieu d'être regroupé dans une seule.

    Il y existe un autre moyen, je chercherai demain si j'ai le temps.

    ...

  10. #30
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    J'aurais mal dormi si je ne te donnais pas la bonne écriture tout de suite. De plus, Option Strict On doit te donner des erreurs aussi sur les 3 dernière lignes du Form_Load.

    Voici le code complet corrigé (et un peu amélioré) :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Option Explicit On
    Option Strict On
    Public Class Form1
     
        Dim TextAPasser As String = String.Empty
     
        Private Sub CHKBox_Click(sender As Object, e As EventArgs) Handles CHK1.Click, CHK2.Click, CHK3.Click
            Dim CHK As CheckBox = CType(sender, CheckBox)
            TextAPasser = String.Empty
            Select Case CHK.Name
                Case "CHK1" ' Nous sommes en Page 1
                    If CHK1.Checked Then
                        TextAPasser = Combo1.Text
                    End If
                Case "CHK2" ' Nous sommes en Page 2
                    If CHK2.Checked Then
                        TextAPasser = Combo2.Text
                    End If
                Case "CHK3" ' Nous sommes en Page 3
                    If CHK3.Checked Then
                        TextAPasser = Combo3.Text
                    End If
            End Select
        End Sub
     
        Private Sub TabControl1_Click(sender As Object, e As EventArgs) Handles TabControl1.Click
            Dim TextPage As String = TabControl1.SelectedTab.Text
            Select Case TextPage
                Case "TabPage1" ' Nous sommes entré en Page 1
                    If Not TextAPasser = String.Empty Then
                        Combo1.Text = TextAPasser
                    End If
                Case "TabPage2" ' Nous sommes entré en Page 2
                    If Not TextAPasser = String.Empty Then
                        Combo2.Text = TextAPasser
                    End If
                Case "TabPage3" ' Nous sommes entré en Page 3
                    If Not TextAPasser = String.Empty Then
                        Combo3.Text = TextAPasser
                    End If
            End Select
            'Vider  TextAPasser pour ne pas poluer les autres TabPages
            TextAPasser = String.Empty
        End Sub
     
        ' Jeu de test
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            '   Valeurs test dans les Combo
            Combo1.Items.Add("Test_1_1")
            Combo1.Items.Add("Test_1_2")
            Combo1.Items.Add("Test_1_3")
            Combo2.Items.Add("Test_2_1")
            Combo2.Items.Add("Test_2_2")
            Combo2.Items.Add("Test_2_3")
            Combo3.Items.Add("Test_3_1")
            Combo3.Items.Add("Test_3_2")
            Combo3.Items.Add("Test_3_3")
            Combo1.Text = Combo1.Items(0).ToString
            Combo2.Text = Combo2.Items(0).ToString
            Combo3.Text = Combo3.Items(0).ToString
        End Sub
     
    End Class
    ...

  11. #31
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 512
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 512
    Par défaut
    Je répète ce que je disais (sauf si ma compréhension initiale était mauvaise): on ne passe aucun information d'une page à l'autre, on veut en revanche conserver l'info sur chacune des pages, donc avec des tabpages, il n'y a besoin de rien (sauf dupliquer les contrôles).

    Dans ton code @Phil Robl, si on modifie en page 1, on coche la case, le texte est récupéré; on va sur l'onglet2, le texte est recopié. on modifie le choix du combo, on coche la case, on revient sur l'onglet 1 et hop, on a récupéré le choix de l'onglet 2 (je ne pense pas que c'est le but)

  12. #32
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Citation Envoyé par umfred Voir le message
    ...
    Dans ton code @Phil Robl, si on modifie en page 1, on coche la case, le texte est récupéré; on va sur l'onglet2, le texte est recopié. on modifie le choix du combo, on coche la case, on revient sur l'onglet 1 et hop, on a récupéré le choix de l'onglet 2 (je ne pense pas que c'est le but)
    Tu as sans doute raison Umfred et pour ce qui est du but, j'avoue que je n'ai pas toujours bien suivi ...
    Mais je pense que Tempus01, même débutant, pourra éliminer de mon exemple ce qui ne l'intéresse pas.

    ...

  13. #33
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    J'aurais mal dormi si je ne te donnais pas la bonne écriture tout de suite. De plus, Option Strict On doit te donner des erreurs aussi sur les 3 dernière lignes du Form_Load.

    Voici le code complet corrigé (et un peu amélioré) :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Option Explicit On
    Option Strict On
    Public Class Form1
     
        Dim TextAPasser As String = String.Empty
     
        Private Sub CHKBox_Click(sender As Object, e As EventArgs) Handles CHK1.Click, CHK2.Click, CHK3.Click
            Dim CHK As CheckBox = CType(sender, CheckBox)
            TextAPasser = String.Empty
            Select Case CHK.Name
                Case "CHK1" ' Nous sommes en Page 1
                    If CHK1.Checked Then
                        TextAPasser = Combo1.Text
                    End If
                Case "CHK2" ' Nous sommes en Page 2
                    If CHK2.Checked Then
                        TextAPasser = Combo2.Text
                    End If
                Case "CHK3" ' Nous sommes en Page 3
                    If CHK3.Checked Then
                        TextAPasser = Combo3.Text
                    End If
            End Select
        End Sub
     
        Private Sub TabControl1_Click(sender As Object, e As EventArgs) Handles TabControl1.Click
            Dim TextPage As String = TabControl1.SelectedTab.Text
            Select Case TextPage
                Case "TabPage1" ' Nous sommes entré en Page 1
                    If Not TextAPasser = String.Empty Then
                        Combo1.Text = TextAPasser
                    End If
                Case "TabPage2" ' Nous sommes entré en Page 2
                    If Not TextAPasser = String.Empty Then
                        Combo2.Text = TextAPasser
                    End If
                Case "TabPage3" ' Nous sommes entré en Page 3
                    If Not TextAPasser = String.Empty Then
                        Combo3.Text = TextAPasser
                    End If
            End Select
            'Vider  TextAPasser pour ne pas poluer les autres TabPages
            TextAPasser = String.Empty
        End Sub
     
        ' Jeu de test
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            '   Valeurs test dans les Combo
            Combo1.Items.Add("Test_1_1")
            Combo1.Items.Add("Test_1_2")
            Combo1.Items.Add("Test_1_3")
            Combo2.Items.Add("Test_2_1")
            Combo2.Items.Add("Test_2_2")
            Combo2.Items.Add("Test_2_3")
            Combo3.Items.Add("Test_3_1")
            Combo3.Items.Add("Test_3_2")
            Combo3.Items.Add("Test_3_3")
            Combo1.Text = Combo1.Items(0).ToString
            Combo2.Text = Combo2.Items(0).ToString
            Combo3.Text = Combo3.Items(0).ToString
        End Sub
     
    End Class
    ...
    Bonsoir Phil Rob,
    Merci pour le code, il fonctionne de mon côté, il faut maintenant que je l'adapte à ma form.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/12/2016, 15h47
  2. remplir combo box avec liste des pays
    Par ygeeg dans le forum Windows Forms
    Réponses: 0
    Dernier message: 19/02/2010, 16h20
  3. Problème de combo box avec additem
    Par Mariquiqui dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/04/2008, 19h25
  4. Formatage d'un texte flash avec des variables PHP
    Par renaud26 dans le forum Flash
    Réponses: 6
    Dernier message: 01/10/2007, 16h31
  5. [C#] Message box avec des boutons diff.
    Par BoOom dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/04/2006, 11h47

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