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 :

[Débutant] Passer pramètre d'une forme à l'autre


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 13
    Par défaut [Débutant] Passer pramètre d'une forme à l'autre
    bonjour tt le monde,

    voilà ma demande :
    j'ai un boutton sur la form1. une fois que je clique sur ce boutton un autre form (form2) qui s'affiche; dans la form2 nous trouvons Une zone texte et un boutton2. ma demande est la suivante :
    lorsque je clique sur le boutton2 de la form2, la form2 disparait et la valeur saisie dans la zone texte s'affiche dans un label declaré dans la form1

    et merci d'avance!

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Je dirais que dans la forme 1 tu crées un label privé, tu crées une propriété pour y accéder (en public), et dans la forme 2 tu passes par la propriété pour modifier le label.
    Bien sur il faut que tes deux forms soient dans le même namespace.

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    et pour affiner la reponse de ced600, je dirais meme que le sujet ayant été traité
    trop de fois à mon gout sur les forums, que tu pourrais chercher un peu dans les forums pour trouver ta réponse qui s'y trouve en long, en large et en rebaché de chez rebaché

    Désolé, mais bon.. c'est un peu "idiot" de repondre X fois à la meme question

    The Monz, Toulouse

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    +1
    Si cela peut motiver les nouveaux à utiliser la fonction recherche, je suis à fond avec toi

  5. #5
    Membre éclairé Avatar de TrEiZe85
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Par défaut
    passe l'objet de form1 dans le constructeur de ta form2

  6. #6
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 13
    Par défaut
    merci de votre réponse.
    j'ai fais ce que vous m'avez demandé. mais j'ai rencontré l'erreur suivant :

    Error 1 : The name 'updateBoutton' does not exist in the current context


    updateBoutton est la fonction pour metter à jour la valeur de la label

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Peux tu montrer ton code ?
    mais je sens bien un truc du genre tu n'as pas passé l'instance de ta form1 à la form2 lors de sa construction et donc l'appel à la méthode ne peut pas fonctionner.
    Utilises tu l'intelliscences ? Parce que si j'ai raison, celle-ci ne t'aurait pas proposer ta méthode car inaccessible.

  8. #8
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 13
    Par défaut
    voila le code du constructor de la form2

  9. #9
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 13
    Par défaut
    voila le code du constructor de la form2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     public Form2()
            {
                InitializeComponent();
            }

    et le fonction d'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void button2_Click(object sender, EventArgs e)
            {
                updateBoutton(textBox1.Text);
            }

  10. #10
    Membre très actif
    Avatar de UNi[FR]
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 340
    Par défaut
    Ton Form2 ne connait pas l'existance de ton Form1 il faut que tu lui dise que Form1 existe


    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
    class Form2
    {
    private Form1 m_frm;
     
    public Form2(Form1 _frm)
    {
    ...
    this.m_frm  = _frm;
    }
     
    public void bouton_click(...)
    {
    this.m_frm.mon_text = "hello";
    }
    }

  11. #11
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 13
    Par défaut
    merci à vous tous. maint ça marche bien!!!

  12. #12
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    On peut se poser la question si c'est la bonne solution de coupler ainsi les classe Form1 et Form2. Ne fait-il pas mieux exposer l'objet dont les propriétés doivent être affichées dans les 2 form dans une classe static ? L'inconvénient est qu'on ne pourra pas binder directement nos contrôles sur cet objet statique. Il faudrait alors recréer une propriété dans chaque Form pour le binding.

  13. #13
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Tu peux aussi utiliser une classe static un peu comme un base de données qui contiendrait les données à afficher, ainsi chaque forme modifierais les données de cette classe, et tu n'aurais plus de problème puisque forme 1 afficherais la donnée mise à jour par forme 2 sans que celle-ci ne connaisse forme 1.

  14. #14
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    Le problème est que l'on ne peut pas binder nos contrôles directement sur ces objets exposé dans la classe static...

  15. #15
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    J'ai un peu de mal avec ton terme binder, je le comprends lorsque l'on parle de port, mais la binder les controles j'ai du mal :
    Liés les controles sur les objets ?

    Avec les classes statiques on peu faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textbox1.Text = MaClasseStatique.MaPropriété;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textbox1.Text = MaClasseStatique.MaMéthode();
    Mais je suppose que tu ne parles pas de cela en disant binder.
    Peut être veux tu dire un truc comme mettre ces objets statiques dans une liste de ta forme ?

  16. #16
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    non :
    Je parle du databinding. C'est à dire lier un contrôle à un objet. Quand l'objet est modifié, le contrôle est directement mis à jour et inversement l'objet est mis à jour quand la valeur du contrôle est mise à jour par l'utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    textBox1.DataBindings.Add("Text", instanceABinder, "NomDeLaPropriétéABinder");
    Le problème est que l'on ne peut binder que sur un instance d'objet et donc on ne peut pas le faire sur une classe statique.

  17. #17
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Ok je comprends.
    Il faudrait dans ce cas la créer une couche au dessus, une classe de controle de ta méthode static, qui fait les accés à celle-ci, et qui possède une instance, dans ce cas la tu bind sur une propriété de cette classe, et à l'aide d'un timer, tu met à jour toutes les secondes les données de ta classe statique en gérant les conflits de mise à jour.

  18. #18
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    C'est une idée. Mais je crois qu'il faut mieux utiliser des événements qu'un timer.
    Mais est-ce vraiment une manière très clean de procéder ?

  19. #19
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Je pense, dans ce cas là la méthode statique devient un espace de stockage, qui peut lui même se construire à l'initialisation à partir d'un autre espace de stockage grace à une de ses méthodes statique.
    Ce n'est pas moche, en fait cela dépend beaucoup du projet, mais je pense qu'une telle conception peut se défendre dans certain cas.

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

Discussions similaires

  1. Passer d'une form en autre en C# smart device
    Par elgafsi86 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/03/2010, 15h18
  2. Passer des variables d'une form à l'autre
    Par flydan dans le forum Débuter
    Réponses: 3
    Dernier message: 11/10/2007, 14h19
  3. problème à passer des valeurs d'une form à l'autre
    Par gibea00 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/08/2007, 14h45
  4. [C#]Comment passer un parametre d une Form à l'autre ?
    Par ToxiZz dans le forum Windows Forms
    Réponses: 9
    Dernier message: 08/02/2006, 13h28
  5. Réponses: 2
    Dernier message: 04/10/2005, 21h54

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