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 :

détecter les modifications


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Par défaut détecter les modifications
    Bonjour à tous,

    J’essaie depuis plusieurs heures maintenant de trouver le code adéquat pour déclencher une action seulement si des modifications ont été faites dans certains éléments. Je m’explique :
    J’ai une tabpage sur laquelle il y a deux combobox et deux textbox ainsi qu’un bouton "enregistrer". Ce bouton est désactivé de manière standard, et ne doit être activé justement que s’il y a eu des modifications faites dans les combobox ou les textbox. Je pensais mettre tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.bouton1.enabled = true
    dans l’événement "Selectindexchanged" de chaque combobox et "textchanged" de chaque textbox, mais ça ne va pas car si je change d’entrée dans ma tabpage (par ex. pour passer de l’employé à Jean à l’employé Paul), il y a effectivement un changement des données dans chaque élément et du coup le bouton est activé, ce que je ne veux pas puisque rien n’a été modifié, je suis simplement passé à une autre entrée...

    Je pensais donc mettre dans l’évévement "leave" de chaque combo et textbox quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Me.textbox1.text.changed = true then me.bouton1.enabled = true
    Évidemment, ce code ne va pas, mais que pourrait être la bonne syntaxe pour arriver à ce que je veux ??

    Sinon, est-ce que vous voyez peut-être une manière encore plus simple de faire tout ça?

    Merci pour votre aide
    Guillaume

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Par défaut
    Bonjour,

    Moi, à ta place, je supprimerais l'événement "Selectindexchanged" et je mettrais pour l'événement "textchanged" ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
            If Not ComboBox1.Text = "" Then
                ' Si il y a du texte
                Button1.Enabled = True
            Else
                ' Si il n'y a pas de texte
                Button1.Enabled = False
            End If
        End Sub
    Ou, vu que tu as plusieurs combobox, je te conseil de mettre ce code. Il te permettera d'avoir qu'un seul événement pour toutes les combobox.
    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
     Public Sub New()
            InitializeComponent()
     
            For Each Onglet As TabPage In TabControl1.TabPages
                For Each Objet As Object In Onglet.Controls
                    Try
                        Dim Combo As ComboBox = Objet
                        ' C'est un combobox
                        AddHandler Combo.TextChanged, AddressOf Changement
                    Catch ex As Exception
                        ' Ce n'est pas un combobox
                    End Try
                Next
            Next
        End Sub
     
        Private Sub Changement(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim Combo As ComboBox = sender
            If Not Combo.Text = "" Then
                ' Si il y a du texte
                Button1.Enabled = True
            Else
                ' Si il n'y a pas de texte
                Button1.Enabled = False
            End If
        End Sub

    Cordialement,

    Éric

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Par défaut
    Salut Éric,

    Ce n’est pas tout à fait ce que je recherche parce qu’en fait les combo et textbox peuvent contenir déjà du texte ou une valeur, elles ne sont pas forcément vides au départ, je veux simplement enregistrer les changements de ces valeurs/textes s’il y en a eu.

    Je prends bonne note du deuxième code, ça peut effectivement me servir !

    Merci !

    Guillaume

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 106
    Par défaut
    Citation Envoyé par GCAccess Voir le message
    en fait les combo et textbox peuvent contenir déjà du texte ou une valeur, elles ne sont pas forcément vides au départ
    D'accord, dans ce cas, je croix que cela fera l'affaire:
    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
     Public Sub New()
            InitializeComponent()
     
            For Each Onglet As TabPage In TabControl1.TabPages
                For Each Objet As Object In Onglet.Controls
                    Try
                        Dim Combo As ComboBox = Objet
                        ' C'est un combobox
                        Combo.Tag = Combo.Text
                        ' On sauvegarde le texte par défaut en "tag"
                        AddHandler Combo.TextChanged, AddressOf Changement
                    Catch ex As Exception
                        ' Ce n'est pas un combobox
                    End Try
                Next
            Next
        End Sub
     
        Private Sub Changement(ByVal sender As Object, ByVal e As System.EventArgs)
     
     
            Dim Changement As Boolean = False
            For Each Onglet As TabPage In TabControl1.TabPages
                ' Cherche si les autres combobox ont des changements
                For Each Objet As Object In Onglet.Controls
                    Try
                        Dim Combo As ComboBox = Objet
                        ' C'est un combobox
                        If Not Combo.Text = Combo.Tag Then
                            ' Si le texte est différent que celui par défaut
                            Changement = True
                        End If
                        ' On sauvegarde le texte par défaut en "tag"
     
                    Catch ex As Exception
                        ' Ce n'est pas un combobox
                    End Try
                Next
            Next
     
     
            If Changement Then
                ' Si il y a du texte
                Button1.Enabled = True
            Else
                ' Si il n'y a pas de texte
                Button1.Enabled = False
            End If
        End Sub
    J'utilise la propiété tag qui permet de sauvegarder une valeur string avec l'objet.

  5. #5
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Bonjour, alors oui en effet tu peux jouer avec les "Addhandler" et autres choses instructives et savantes.

    Sinon, une méthode simpliste serait que tu créer un boolean du nom : ChangementOnglet.

    Que tu mets a False par défaut.

    Sur l'évènement TapPage_Clique, tu mets le boolean a True.

    Tu charges tes données dans tes combo et TextBox.

    Dans chaque évènement "SelectedIndexChanged" ou "TextChanged", tu commences par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If ChangementOnglet=False Then
    'TonCode
    EndIf
    Comme ça il ne fera rien lors d'un changement de personne.

    A la fin du chargement, tu remets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChangementOnglet = False
    Et voila.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 127
    Par défaut
    Merci beaucoup à tous les deux !

    J'ai finalement choisi la solution de mactwist69 qui est plus facile à mettre en œuvre dans mon cas, mais je garde également ta solution sous le coude, Éric.

    Encore merci à tous les deux !!

    Guillaume

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

Discussions similaires

  1. Détecter les modifications faites dans une zone de texte avec la souris
    Par nosferapti dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 24/09/2009, 09h48
  2. Détecter les modifications sur une base de données
    Par abdelhamidem dans le forum Débuter
    Réponses: 7
    Dernier message: 09/02/2009, 18h16
  3. VB.Net - Comment détecter les modifications dans un Datagridview
    Par novice123 dans le forum Windows Forms
    Réponses: 17
    Dernier message: 19/12/2008, 16h57
  4. Réponses: 5
    Dernier message: 04/09/2008, 13h02
  5. Commet détecter les modifications d'un répertoire
    Par czgxp dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 26/06/2008, 14h37

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