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 :

Passer des infos par event


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Par défaut Passer des infos par event
    Bjr,

    j aimerai passer des info d une fenetre a une autre a l aide d un event.
    A vrai dire j ai 2 fenetres , A et B , A permet d encoder des donnees et lance B ; B permet de voir un resume des donnees de A, j aimerai que lorsque A change , un event se produise et soit catcher par B pour etre mis a jour .

    Je suis arrive sans probleme a faire passer des info d une fenetre A à une fenetre b mais le contraire me pose un probleme au moment ou je dois preciser que B doit faire une chose precise lorsqu elle catche l event envoyer par A , c est tt simplement a cet endroit que je calle.
    Si qq un sait m aider, merci d avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 115
    Par défaut
    Essaie de garder une instance de A dans une variable membre de B que tu lui passe dans le constructeur. Ainsi, tu auras quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private A parent;
     
    // Constructeur
    public B(A instance)
    {
        parent = instance;
    }
     
     
    // Ensuite quand tu crée une fenêtre B à partir de A :
    fenetreB = new B(this);

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Je ne saurais trop te conseiller de ne pas rendre tes fenêtres interdépendantes, ça devient très rapidement complexe. Pourquoi ne pas utiliser A comme fenêtre principale et quand ses données changent, elle appelle une methode de B. Par contre quand B finit son traitement, je partage ton approche utilisant un événement auquel A s'abonnerait avant de lancer le traitement dans B.

    A mon avis, tu t'en sortiras beaucoup plus simplement. Et comme on dit en général, la solution la plus simple est souvent la meilleure.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Par défaut
    J ai besoin de la fentre B car elle permet de voir un l ensemble des donnees dans un datagridview ( j ai plus de place dans la fenetre A pour le datagridview), est uniquement pour cette raison que j en ai besoin, je suis tt a fait d ac avec toi pour essayer de rendre le moins possible dependant les fenetres les une aux autres mais dans ce cas precis je suis malheureusement oblige de le faire.


    Sinon damned3, j ai pense que fenetre B.Parent = this ( ceci ecris dans la fenetre A ) aurait pu me permettre de faire cela mais ça ne va pas, je n ai pas essaye ta maniere de faire mais je pense qu elle est fort simillaire .

    je vais vite essayer de poster un code simplifie de ce que je veux faire.


    edit :

    [img=http://img136.imageshack.us/img136/1042/fenetre1vw0.th.jpg]

    [img=http://img221.imageshack.us/img221/7779/fenetre2dz6.th.jpg]


    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
     public partial class Form1 : Form
        {
            //fenetre 1 veut prevenir par un event a ma fenetre 2 qu il y a du neuf
     
            public delegate void PasserInfoHandler(Object sender, PasserInfoEventArgs test);
            public event PasserInfoHandler PassageInfo;         
     
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
     
            private void OuvrirFenetre2(object sender, EventArgs e)
            {
                Form2 f2 = new Form2(this );
                f2.Show();
     
            }
     
            private void PrevenirFenetre2DunChangement(object sender, EventArgs e)
            {
     
                PasserInfoEventArgs p = new PasserInfoEventArgs(TBFenetre1.Text);
                if (PassageInfo != null)
                {
                    PassageInfo(this, p);
                }
             }
    }
    ///////////////////////////////////////////////////////////////////////////////
     
     public partial class Form2 : Form
        {
            Form1 f;
     
            public Form2( Form1 ff)
            {
                InitializeComponent();
                f = ff;
                f.PassageInfo += new Form1.PasserInfoHandler(this.passageeffectue);
     
                // je recois un event (PasserInfoHandler PassageInfo) 
                // de la form 1 (le parent de cette form)
                // je traite c et event a l aide de la methode passage effectue
            }
     
            private void FermerLaFenetre2(object sender, EventArgs e)
            {
                this.Close();
            }
     
     
    // fonction a faire lors de l event envoye par la fenetre1
            public void passageeffectue(Object sender, PasserInfoEventArgs p)
            {
                TBFenetre2.Text = p.information;
            }
     
     
    /////////////////////////////////////////////////////////////////////
     
        public class PasserInfoEventArgs : EventArgs
        {
            public String information;
     
            public PasserInfoEventArgs(String s)
            {
                information = s;
            }
        }

    Tt est bien entendu dans le mm namespace, apparement ça fonctionne mais je n aime quand mm pas avoir les lignes suivantes dans ma form2 , car j aurai
    aime pouvoir reutiliser cette fenetre dans d autre cas d ou le this.parent me semblait plus approprie mais etrangement il ne marche pas si qq un a une idee .

    ...
    Form1 f;
    public Form2( Form1 ff)
    {
    InitializeComponent();
    f = ff;
    ...



    edit 2: je vais me contenter de faire un appel a une fct de la 2e form pour mettre a jour c est plus simple mm si ce qu il y a au dessus fonctionne .

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

Discussions similaires

  1. Passer des arguments par les signaux des event-box
    Par black is beautiful dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 30/10/2008, 08h43
  2. Faire passer des infos de Word a excel
    Par canaboss dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/07/2006, 08h06
  3. Réponses: 4
    Dernier message: 26/05/2006, 17h17
  4. Passer des infos d'une zone de liste à une autre
    Par Rinecka dans le forum Access
    Réponses: 1
    Dernier message: 09/01/2006, 11h59
  5. [CR7][VB6] Passer des infos de Vb vers CR
    Par tripper.dim dans le forum SDK
    Réponses: 2
    Dernier message: 13/11/2003, 13h30

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