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

C# Discussion :

Load form set Objet


Sujet :

C#

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Points : 191
    Points
    191
    Par défaut Load form set Objet
    Bonjour,

    J'ai un form avec textbox

    Quand je change la valeur dans ce textbox,
    j'envoie la valeur dans une variable privée d'un objet par le Setter.

    Quand je load mon form, je charge mon objet et envoie la valeur dans mon textBox,

    LE PROBLEME : au load, il effectue le traitement du setter car quand j'envoie la valeur dans le textbox je suis envoyé dans l'evenement textchange du TextBox et il effectue le traitement de Setter ma variable dans l'objet,

    Comment pourrais-je palier à ca ?

    Vous m'direz, je n'ai qu'a désactiver l'event sur ce textbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    this.tb_Autres.TextChanged-= new EventHandler(this.tb_Autres_TextChanged);
     
    //traitement
     
    this.tb_Autres.TextChanged+= new EventHandler(this.tb_Autres_TextChanged);
    Mais quand il faut le faire pour une 30 aine de form ...

    Auriez-vous une idée de comment faire ?

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    Tu mets une fonction initialisation que tu appelles au chargement de la form, et dans cette fonction, tu créés ton évènement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.tb_Autres.TextChanged+= new EventHandler(this.tb_Autres_TextChanged);
    et si c'est comme moi, il ne passe pas dans ta fonction évènement au chargement de la form.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Points : 191
    Points
    191
    Par défaut
    je ne comprend pas ton raisonnement, je ne vois pas le rapport avec ma demande

    Quand tu instancie un objet Form,
    Il passe de toute manière dans le constructeur qui lui initialize les évenements.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    oui, il les initialise, mais ne rentre pas dans la fonction évènement!!! Aucune idée du pourquoi, je m'en suis apperçu une fois que j'ai eu le même soucis que toi.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Points : 191
    Points
    191
    Par défaut
    Je ne suis pas sur qu'on se comprennent, ou c'est moi qui ne comprend rien, c'est possible, c'est vendredi

    Je suis dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void Manometre_Load(object sender, EventArgs e)
    {
          this.tb_Autre.Text = "ho ho ho";
    }
    Et la ==>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void tb_Autre_TextChanged(...)
    {
         monObjet.JeSetMaVarPrivée(this.tb_Autre.Text);
    }
    Je veux qu'au LOAD, il ne rendre pas dans l'évenement 'tb_Autre_TextChanged'

    et JE NE VEUX PAS mettre des

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    this.tb_Autres.TextChanged-= new EventHandler(this.tb_Autres_TextChanged);
     
    this.tb_Autre.Text = "ho ho ho";
     
    this.tb_Autres.TextChanged+= new EventHandler(this.tb_Autres_TextChanged);
    Pour chacun de mes champ du Formulaire.



    Je ne comprend pas ta démarche, pourquoi j'irais crée un évenement dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private void Manometre_Load(object sender, EventArgs e)
    Alors qu'il à déjà été crée dans le constructeur de mon formulaire ?

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    autant pour moi, j'ai loupé une ligne dsl

    par contre, tu peux toujours créer l'évènement après le chargement de la chaîne de caractère dans ton textbox et non dans le formulaire. ça résoudra ton problème si je ne me troupe pas encore une fois. Car là, il ne créera l'évènement qu'après avoir complété le textbox^^

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par Patmat44 Voir le message
    autant pour moi, j'ai loupé une ligne dsl

    par contre, tu peux toujours créer l'évènement après le chargement de la chaîne de caractère dans ton textbox et non dans le formulaire. ça résoudra ton problème si je ne me troupe pas encore une fois. Car là, il ne créera l'évènement qu'après avoir complété le textbox^^
    J'y ai pensé, quand tu crée un formulaire, dans le constructeur, il crée les évenement (InitializeComponent() , cela voudrait dire que je devrait m'amuser à allé prendre chaque évenement de chaque champ pour récrée une nouvelle fonction, ca revient au même que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    this.tb_Autres.TextChanged-= new EventHandler(this.tb_Autres_TextChanged);
     
    this.tb_Autre.Text = "ho ho ho";
     
    this.tb_Autres.TextChanged+= new EventHandler(this.tb_Autres_TextChanged);
    ca ne me convient pas, mais merci pour la proposition.

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    en effet oui, ça revient au même^^ il est temps que le week-end arrive, je fatigue!!!!

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    je viens de penser à une autre solution, même si elle ne te conviendra pas non plus je pense, je te la donne :
    tu créés une variable booléenne à false dans la form ou ya l'évènement textchanged et tu la passes à true lorsque l'utilisateur clic sur le textbox.
    et dans l'évènement textchanged, tu vérifies que la variable est à true avant de faire ce que tu souhaites.

    sur ce bon week-end à toi et j'espère que tu trouvera une meilleur solution

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par Patmat44 Voir le message
    je viens de penser à une autre solution, même si elle ne te conviendra pas non plus je pense, je te la donne :
    tu créés une variable booléenne à false dans la form ou ya l'évènement textchanged et tu la passes à true lorsque l'utilisateur clic sur le textbox.
    et dans l'évènement textchanged, tu vérifies que la variable est à true avant de faire ce que tu souhaites.

    sur ce bon week-end à toi et j'espère que tu trouvera une meilleur solution
    C'est gentil mais ca ne m'arrange pas non plus, c'est trop lourd pour au final pas grand chose, je vais essayer de trouver une autre solution.

    merci quand même pour tes suggestions

    Si quelqu'un d'autre à une idée, je veux bien la lire :-)

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Points : 460
    Points
    460
    Par défaut
    Bonjour,

    Si tester un booléen dans un événement c'est trop lourd, j'ai bien peur qu'aucune solution ne te conviennent.

    Par contre je pense qu'il ne faut pas l'appliquer comme l'a décrit Patmat44.
    Il faut mettre le booleen à false au début du load, le repasser à true à la fin du load. Dans l’événement textchanged, si le booleen est à true alors on fait le traitement sinon on ne fait rien.

    De manière plus général on peut mettre une variable d’état, et chaque événement vérifie qu'il peut être appliquer en fonction de l'état actuel de la form.

  12. #12
    Membre habitué
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Points : 191
    Points
    191
    Par défaut
    N'ayant pas trouvé de meilleur méthode, je m'en remet à votre proposition, merci pour vos idées

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/03/2012, 16h03
  2. Load Form ne marche pas
    Par Chipss dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/08/2010, 10h52
  3. [VBA-Form]Quel objet rajouter pour dessiner dans une userform?
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2008, 10h37
  4. la reconnaîssance de formes des objets détectés
    Par inès83 dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 07/08/2008, 17h44
  5. [DOM XML] Erreur fonction load() d'un objet dom??
    Par ribrok dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/10/2005, 11h43

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