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 :

[C#][Débutant] Comment savoir qu un champ a été modifié ?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 76

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut [C#][Débutant] Comment savoir qu un champ a été modifié ?
    Bonjour, j ai une form, avec dessus plusieurs champs reliés a une table

    pour ca j ai , un datasource, un BindingSource et un TableAdapter

    je voudrais mettre enable mon bouton Appliquer si un ou plusieurs champ on été modifies

    comment faire ?

  2. #2
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut
    Tu fais ça en faisant un truc tout bête : sur le textchanged des textbox, tu fais un enabled=true de ton bouton ...

  3. #3
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 76

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut
    Merci

    j avais deja fait ca, mais s il y a 20 champs sur la form pour les 20 champs il faudra coder cet event
    je ne trouves pas ca top

    n y a t il pas un autre moyen pour detecter un changement sur l enregistrement en cours ?

  4. #4
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut
    Y'a peut-être un autre moyen, je ne le connais pas ..
    .
    Soit dit en passant, quel que soit le nombre de champs que tu as, tu peux gérer des évènements différents avec la même procédure, ce qui est somme toute très rapide ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Par défaut
    SI tu veux t'affranchir du codage de ces events, deux solutions :

    - coder un event par type de controle et brancher tous les EventHandlers TextChanged, ValueChanged, CheckedChanged sur ces méthodes

    ou

    - ajouter un timer de rafraichissement d'interface qui ttes les X ms vérifie DataRowCourante.RowState est à 'Modified', 'Added' ou non. Si c le cas, dégriser le bouton. Cette solution peut etre dangereuse si tu ne penses pas a arreter ton timer a la fermeture de ta fenetre.

    Si tu ne comprends pas trop, hésite pas

  6. #6
    Membre éprouvé
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Par défaut
    Citation Envoyé par boulete
    Y'a peut-être un autre moyen, je ne le connais pas ..
    .
    Soit dit en passant, quel que soit le nombre de champs que tu as, tu peux gérer des évènements différents avec la même procédure, ce qui est somme toute très rapide ...
    Beh, oui,
    - tu ouvres le fichier form.designer.cs
    - tu parcours la method private void InitializeComponent()
    Chaque Structure de controle y est decrite
    - tu ajoutes une ligne du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.combobox.SelectedIndexChanged += new System.EventHandler(this.methodLiéeALEvenement);
    (exemple pour le combobox, mais tu trouves facilement les evenements liées aux autres controles)
    - Tu edites le fichier form.cs et tu y colles la method :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    private void methodLiéeALEvenement {
       bouton.Enabled = true;
    }
    ca se fait vite avec des copier/coller.

    D'un autre côté, je me demande s'il n'existe pas evenement sur l'ensemble des controles fils. Si tu trouves je veux bien la reponse.

    Bonne journée

    L.

  7. #7
    Membre confirmé Avatar de boulete
    Profil pro
    Inscrit en
    Février 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2006
    Messages : 132
    Par défaut
    Déjà comme ça va très très vite ...
    Pour info, rien à voir, comment on fait les balises "citation" déjà ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/06/2006, 13h05
  2. [SQL] Comment savoir si un champs a été modifié ?
    Par flOZ dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/05/2006, 08h00
  3. [C#][Débutant] Comment savoir si un PictureEdit est vide ou plein
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 7
    Dernier message: 07/05/2006, 15h34
  4. Réponses: 5
    Dernier message: 12/09/2005, 17h34
  5. [Access] Comment savoir qu'un champs est vide ?
    Par Oberown dans le forum ASP
    Réponses: 9
    Dernier message: 25/10/2004, 10h47

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