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 :

appler un controle qui se trouve dans une autre form


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 31
    Points
    31
    Par défaut appler un controle qui se trouve dans une autre form
    bonjour tout le monde

    j'ai deux forms la principale form1 qui affiche les données de l'application et l'autre form2 qui est appelé par form1 avec un bouton , mais comment accéder aux controles de la form1 à partir de la form2 ( je veux dire dans le code de la form2) .

    exemple textbox1 qui appartient à form1 . sachant que le namespace est le meme mour les deux .

    merci de votre aide

  2. #2
    Membre averti
    Avatar de sam_XIII
    Profil pro
    Inscrit en
    Août 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 221
    Points : 353
    Points
    353
    Par défaut
    suffit de faire un tour dans la faq
    Avant de poster, voir les faq, les sources et utiliser la fonction rechercher

    Mon site

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    bonjour

    voila ce que j'ai fait

    dans la form1 qui s'appelle interact

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     private void button3_Click(object sender, EventArgs e)
            {
                Form mrecherche = new recherche()  ;
                mrecherche.Owner = this;
                mrecherche.Show();
     
     
            }
    et dans la deuxième qui s'appelle recherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     private void button1_Click(object sender, EventArgs e)
            {
     
                interact minteract = (interact)this.Owner;
    mais je ne peux pas acceder avec par exemple !

    merci de m'indiquer comment faire .


  4. #4
    Membre habitué Avatar de Mourad
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 152
    Points : 161
    Points
    161
    Par défaut
    un seul mot : propriété
    à toi de faire le reste
    il n'y a pas de solution sans problème.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    pardon quelle proprité , je suis qu'un bleu dans c# et dotnet

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2007
    Messages : 31
    Points : 33
    Points
    33
    Par défaut
    salut

    pour y acceder tu dois la declarer en public

    a+
    costik

  7. #7
    Membre habitué Avatar de Mourad
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 152
    Points : 161
    Points
    161
    Par défaut
    par exemple dans ta form1 tu dois décalrer une propriété publique ou internal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public TextBox TonTextBox
    {
        get{ return this._TonTextBox ;}
    }
    _TonTextBox est ton instance du textbox en question
    il n'y a pas de solution sans problème.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    oui c 'est vrai j'ai oublie de le déclarer comme public pour accéder


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     minteract.textBox2.Text= // resultat d'une requete par exemple
    Merci à tous

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2007
    Messages : 31
    Points : 33
    Points
    33
    Par défaut
    oublis pas le tag résolu

    a+
    costik

  10. #10
    Membre habitué Avatar de prem's
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 152
    Points
    152
    Par défaut
    Citation Envoyé par sam_XIII
    suffit de faire un tour dans la faq
    perso je trouve pas la solution dedans ...
    mais ça serait bien de la mettre...enfin les, vu que y a plusieurs solutions:

    - mettre le controle/la variable en public comme fait dans ce topic
    - passer le controle en paramètre au constructeur de la deuxième form.
    In the name of god, impure souls of the living death shall be banished into eternal damnation. Amen

  11. #11
    Membre averti
    Avatar de sam_XIII
    Profil pro
    Inscrit en
    Août 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 221
    Points : 353
    Points
    353
    Par défaut
    Citation Envoyé par prem's
    perso je trouve pas la solution dedans ...
    mais ça serait bien de la mettre...enfin les, vu que y a plusieurs solutions:

    - mettre le controle/la variable en public comme fait dans ce topic
    - passer le controle en paramètre au constructeur de la deuxième form.
    ben avec ca y avai deja moyen de s'en sortir :

    Citation Envoyé par la faq
    Comment accèder à une méthode publique d'une form à partir d'une autre form créé par la première ? [haut]

    auteur : dev01
    Afin de pouvoir communiquer à partir d'une form nouvellement ouverte vers la form créatrice vous devez passer la form créatrice à la nouvelle form.

    //Dans Form1
    public void TraitementForm1()
    {

    }

    public void OuvertureForm2()
    {

    MaForm2 maForm2 = new MaForm2();
    maForm2.Owner = this;
    maForm2.Show();
    }

    //Dans MaForm2

    private void ButtonOk_Click(object sender, System.EventArgs e)
    {
    MaForm1 maForm1 = (MaForm1)this.Owner;
    maForm1.TraitementForm1();
    }
    ...
    Avant de poster, voir les faq, les sources et utiliser la fonction rechercher

    Mon site

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    oui c'est ce que j'ai suivi, et j'ai rendu la déclaration textbox1 dans le fichiers form1.Designer.cs (dans mon cas interacte.Designer.cs) public
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public System.Windows.Forms.TextBox textBox2;
    et voila ça roule !

  13. #13
    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
    Points : 5 195
    Points
    5 195
    Par défaut
    Pour info, je tiens quand meme à préciser que ce genre de "manipulation" n'est pas forcement souhaitable et qu'un modèle de données sur laquelle serait
    "binder" des textbox dans ton cas serait plus "propre"...

    En effet, d'un point de vue découpage de code, c'est pas super propre de faire
    qu'un controle aille mettre à jour un controle appartenant à une autre données

    car si, la fenetre mise à jour par la form1 est la form2, et que l'utilisateur ferme et ré-ouvre la form2 (genre appli Mdi avec outils)... il y a des risques que les
    données afficher à l'init de la form2 ne soient pas à jour... avec en plus un
    système ou les mises à jours obligent chaque form à connaitre une autre forme

    Il serait plus "judicieux" mais parfois plus fastidieux (quoi que) d'avoir un module
    qui contient les informations, et chaque Form vient mettre à jour ou lire les données disponibles (les event peuvent servir à cela aussi)

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    mais dans mon cas c'est une fenetre modale (la forme2) qui est appelée par la form1 telque la form2 est une recherche multicrétaire et le résultat de cette recherche doit être récupéré dans le datagrid et un text box ( qui récupère un count(*) ) donc je ne vois pas une autre solution ! pour la proproté du code , je suis débutant en c# donc je ne vois pas vraiment ce que tu veux dire ?

  15. #15
    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
    Points : 5 195
    Points
    5 195
    Par défaut
    Ce que je veux dire c'est qu'il faut SEPARER l'aspect Visuel de l'aspect Fonctionnel...

    Exemple : Dans ta voiture, si tu changes le volant par un nouveau volant différent mais qui se connecte sur ta colonne de direction, tu conduiras de la
    meme façon, et pourtant l'aspect du volant sera différent... pourquoi ? parce
    que le volant fourni un service sans se "soucier" de ce qui est fait derrière...

    Donc, ta form2 doit fournir des informations sans se soucier de savoir qui , ou et comment elles seront exploiter...

    C'est pour cela qu'il est "judicieux" d'avoir une classe Document (c un nom prie comme ca ) dans lequel tu vas mettre à disposition des informations recueillies par exemple dans la form2... et quand la form2 sera fermée, l'appelant saura qu'il peut aller chercher des informations dans le Document et non dans la form2.. comme ca, le jour ou tu changes le look de ta form2 sans changer les informations fournies, tu n'auras que peu de changement au niveau code... (au lieu d'appeler Form2, tu appeleras Form2Bis )...

    L'idée est donc de rendre les choses indépendantes les unes des autres quand on parle des aspects visuels...

    Un peu comme un jeu... Dans un jeu, l'intelligence n'est pas dans les classes qui s'occupent du rendu visuel...Il est conseillé de faire de meme dans les applications Winforms ou autres

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 31
    Points
    31
    Par défaut
    Je te remercie pour ce conseil, parce que moi l’essentiel que ça marche !!! mais réellement c’est pas ça il faut voir aussi l’évolution et la maintenance du logiciel .

  17. #17
    Membre habitué Avatar de prem's
    Inscrit en
    Avril 2003
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 145
    Points : 152
    Points
    152
    Par défaut
    c'est sur l'architecture 3-tiers est la meilleure, tant pour la faciliter de dev que pour la maintenance (ça va les interfaces bien construites se comprennent vite quand on doit reprendre un code)
    mais hélas ce n'est pas tout le temps utilisable (quand on reprends un vieux code tout moche, on peut pas tout faire bien tout de suite par exemple) ....
    In the name of god, impure souls of the living death shall be banished into eternal damnation. Amen

  18. #18
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Citation Envoyé par prem's
    c'est sur l'architecture 3-tiers est la meilleure
    Vaut mieux parler de N-tiers.
    De plus en plus on a tendance à rajouter une quatrième couche (en découpant la couche interface en deux), voir plus dans certaines archi.
    (Le couches se divisent elles-même en couches )

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 36
    Points : 35
    Points
    35
    Par défaut
    @TheMonz31: Je me pose une petite question... cette classe "Document" qui va mettre à disposition de Form1 (ou n'importe quelle autre Form, en fait) les informations receuillies dans Form2... comment y accéder à partir de n'importe quel Form autrement qu'en déclarant la classe static ?

    Parce que s'il faut bien la mettre en static, quel serait l'avantage par rapport à de simples variables globales ? On dit qu'il faut préférer cette méthode aux variables globales mais je saisis pas la différence.

    PS: Ma question est surement stupide mais je n'ai que peu d'expérience en C#.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2012, 10h21
  2. Réponses: 1
    Dernier message: 30/07/2010, 14h39
  3. Appeler une fonction qui se trouve dans une autre fonction
    Par waxouse dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 11/05/2009, 16h28
  4. Réponses: 2
    Dernier message: 02/04/2008, 19h55
  5. Acceder à un object qui se trouve dans une autre classe
    Par ceres02 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 08/02/2006, 13h29

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