J'essaye en vain de creer une appli Windows Form qui puisse faire
communiquer une couche métier et une couche présentation.
Pour tester cette possibilité, j'ai créé un projet Windows Form et j'ai mis
un bouton et une textbox dans la form principale(Form1)
L'appui du bouton doit
Génèrer un message(string)
Le mettre dans une file d'attente
Déclencher un évenement pour indiquer sa mise en file d'attente
Une autre classe doit
Réagir à l'évenement et sortir le message de la file
Le traiter et afficher le résultat dans la textbox de la form principale.
J'ai déclaré la file d'attente et l'évenement comme public dans la classe
Form1
L'appui du bouton effectue bien les action citée plus haut
Mais je n'arrive pas à comprendre comment devenir client de l'évenement et
de la file d'attente à partir d'une autre classe. Bien que déclaré public,
je n'accede ni à l'un ni à l'autre...
De plus j'aimerai comprendre pourquoi même en instanciant après
"Application.run" la Form1 (Form1 x = new Form1; x.Activate;), je n'accede
pas à x ni aux membres public de Form1 à partir d'une autre classe...
Si quelqu'un pouvait me mettre sur la voix et me donner quelques
explications, ce serait NiCr.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Bacelar
Un bon bouquin s'impose.
Le mot clé delegate et l'opération =+ sur ceux-ci de montreront bien des merveilles. -- Paul Bacelar MVP VC++
"Bruno" wrote in message news:
Bonjour,
J'essaye en vain de creer une appli Windows Form qui puisse faire communiquer une couche métier et une couche présentation. Pour tester cette possibilité, j'ai créé un projet Windows Form et j'ai mis un bouton et une textbox dans la form principale(Form1)
L'appui du bouton doit Génèrer un message(string) Le mettre dans une file d'attente Déclencher un évenement pour indiquer sa mise en file d'attente
Une autre classe doit Réagir à l'évenement et sortir le message de la file Le traiter et afficher le résultat dans la textbox de la form principale.
J'ai déclaré la file d'attente et l'évenement comme public dans la classe Form1 L'appui du bouton effectue bien les action citée plus haut Mais je n'arrive pas à comprendre comment devenir client de l'évenement et de la file d'attente à partir d'une autre classe. Bien que déclaré public, je n'accede ni à l'un ni à l'autre... De plus j'aimerai comprendre pourquoi même en instanciant après "Application.run" la Form1 (Form1 x = new Form1; x.Activate;), je n'accede pas à x ni aux membres public de Form1 à partir d'une autre classe...
Si quelqu'un pouvait me mettre sur la voix et me donner quelques explications, ce serait NiCr.
Bruno
Un bon bouquin s'impose.
Le mot clé delegate et l'opération =+ sur ceux-ci de montreront bien des
merveilles.
--
Paul Bacelar
MVP VC++
"Bruno" <bruno.remeyse@wanadoo.fr> wrote in message
news:O8gbUm7FGHA.376@TK2MSFTNGP12.phx.gbl...
Bonjour,
J'essaye en vain de creer une appli Windows Form qui puisse faire
communiquer une couche métier et une couche présentation.
Pour tester cette possibilité, j'ai créé un projet Windows Form et j'ai
mis
un bouton et une textbox dans la form principale(Form1)
L'appui du bouton doit
Génèrer un message(string)
Le mettre dans une file d'attente
Déclencher un évenement pour indiquer sa mise en file d'attente
Une autre classe doit
Réagir à l'évenement et sortir le message de la file
Le traiter et afficher le résultat dans la textbox de la form principale.
J'ai déclaré la file d'attente et l'évenement comme public dans la classe
Form1
L'appui du bouton effectue bien les action citée plus haut
Mais je n'arrive pas à comprendre comment devenir client de l'évenement et
de la file d'attente à partir d'une autre classe. Bien que déclaré public,
je n'accede ni à l'un ni à l'autre...
De plus j'aimerai comprendre pourquoi même en instanciant après
"Application.run" la Form1 (Form1 x = new Form1; x.Activate;), je n'accede
pas à x ni aux membres public de Form1 à partir d'une autre classe...
Si quelqu'un pouvait me mettre sur la voix et me donner quelques
explications, ce serait NiCr.
Le mot clé delegate et l'opération =+ sur ceux-ci de montreront bien des merveilles. -- Paul Bacelar MVP VC++
"Bruno" wrote in message news:
Bonjour,
J'essaye en vain de creer une appli Windows Form qui puisse faire communiquer une couche métier et une couche présentation. Pour tester cette possibilité, j'ai créé un projet Windows Form et j'ai mis un bouton et une textbox dans la form principale(Form1)
L'appui du bouton doit Génèrer un message(string) Le mettre dans une file d'attente Déclencher un évenement pour indiquer sa mise en file d'attente
Une autre classe doit Réagir à l'évenement et sortir le message de la file Le traiter et afficher le résultat dans la textbox de la form principale.
J'ai déclaré la file d'attente et l'évenement comme public dans la classe Form1 L'appui du bouton effectue bien les action citée plus haut Mais je n'arrive pas à comprendre comment devenir client de l'évenement et de la file d'attente à partir d'une autre classe. Bien que déclaré public, je n'accede ni à l'un ni à l'autre... De plus j'aimerai comprendre pourquoi même en instanciant après "Application.run" la Form1 (Form1 x = new Form1; x.Activate;), je n'accede pas à x ni aux membres public de Form1 à partir d'une autre classe...
Si quelqu'un pouvait me mettre sur la voix et me donner quelques explications, ce serait NiCr.
Bruno
Geoffrey
Il faut aller bien plus loin que ca je crois. il ne sait probablement pas faire de delegate puise la classe metier ne connait pas les objet public de form1.
Le mieux serait p-e d'avoir la file et l'evenement dans la classe metier.
Form1 instancie (p-e également possible en statique) la classe metier, ajoute dans la file et appelle l'evenement (simple methode)
"Paul Bacelar" a écrit dans le message de news:%23QpurV%
Un bon bouquin s'impose.
Le mot clé delegate et l'opération =+ sur ceux-ci de montreront bien des merveilles. -- Paul Bacelar MVP VC++
"Bruno" wrote in message news: > Bonjour, > > J'essaye en vain de creer une appli Windows Form qui puisse faire > communiquer une couche métier et une couche présentation. > Pour tester cette possibilité, j'ai créé un projet Windows Form et j'ai > mis > un bouton et une textbox dans la form principale(Form1) > > L'appui du bouton doit > Génèrer un message(string) > Le mettre dans une file d'attente > Déclencher un évenement pour indiquer sa mise en file d'attente > > Une autre classe doit > Réagir à l'évenement et sortir le message de la file > Le traiter et afficher le résultat dans la textbox de la form
principale.
> > J'ai déclaré la file d'attente et l'évenement comme public dans la
classe
> Form1 > L'appui du bouton effectue bien les action citée plus haut > Mais je n'arrive pas à comprendre comment devenir client de l'évenement
et
> de la file d'attente à partir d'une autre classe. Bien que déclaré
public,
> je n'accede ni à l'un ni à l'autre... > De plus j'aimerai comprendre pourquoi même en instanciant après > "Application.run" la Form1 (Form1 x = new Form1; x.Activate;), je
n'accede
> pas à x ni aux membres public de Form1 à partir d'une autre classe... > > Si quelqu'un pouvait me mettre sur la voix et me donner quelques > explications, ce serait NiCr. > > Bruno > >
Il faut aller bien plus loin que ca je crois.
il ne sait probablement pas faire de delegate puise la classe metier ne
connait pas les objet public de form1.
Le mieux serait p-e d'avoir la file et l'evenement dans la classe metier.
Form1 instancie (p-e également possible en statique) la classe metier,
ajoute dans la file et appelle l'evenement (simple methode)
"Paul Bacelar" <paul.bacelar@PASDESPAMlaposte.net> a écrit dans le message
de news:%23QpurV%23FGHA.3064@TK2MSFTNGP10.phx.gbl...
Un bon bouquin s'impose.
Le mot clé delegate et l'opération =+ sur ceux-ci de montreront bien des
merveilles.
--
Paul Bacelar
MVP VC++
"Bruno" <bruno.remeyse@wanadoo.fr> wrote in message
news:O8gbUm7FGHA.376@TK2MSFTNGP12.phx.gbl...
> Bonjour,
>
> J'essaye en vain de creer une appli Windows Form qui puisse faire
> communiquer une couche métier et une couche présentation.
> Pour tester cette possibilité, j'ai créé un projet Windows Form et j'ai
> mis
> un bouton et une textbox dans la form principale(Form1)
>
> L'appui du bouton doit
> Génèrer un message(string)
> Le mettre dans une file d'attente
> Déclencher un évenement pour indiquer sa mise en file d'attente
>
> Une autre classe doit
> Réagir à l'évenement et sortir le message de la file
> Le traiter et afficher le résultat dans la textbox de la form
principale.
>
> J'ai déclaré la file d'attente et l'évenement comme public dans la
classe
> Form1
> L'appui du bouton effectue bien les action citée plus haut
> Mais je n'arrive pas à comprendre comment devenir client de l'évenement
et
> de la file d'attente à partir d'une autre classe. Bien que déclaré
public,
> je n'accede ni à l'un ni à l'autre...
> De plus j'aimerai comprendre pourquoi même en instanciant après
> "Application.run" la Form1 (Form1 x = new Form1; x.Activate;), je
n'accede
> pas à x ni aux membres public de Form1 à partir d'une autre classe...
>
> Si quelqu'un pouvait me mettre sur la voix et me donner quelques
> explications, ce serait NiCr.
>
> Bruno
>
>
Il faut aller bien plus loin que ca je crois. il ne sait probablement pas faire de delegate puise la classe metier ne connait pas les objet public de form1.
Le mieux serait p-e d'avoir la file et l'evenement dans la classe metier.
Form1 instancie (p-e également possible en statique) la classe metier, ajoute dans la file et appelle l'evenement (simple methode)
"Paul Bacelar" a écrit dans le message de news:%23QpurV%
Un bon bouquin s'impose.
Le mot clé delegate et l'opération =+ sur ceux-ci de montreront bien des merveilles. -- Paul Bacelar MVP VC++
"Bruno" wrote in message news: > Bonjour, > > J'essaye en vain de creer une appli Windows Form qui puisse faire > communiquer une couche métier et une couche présentation. > Pour tester cette possibilité, j'ai créé un projet Windows Form et j'ai > mis > un bouton et une textbox dans la form principale(Form1) > > L'appui du bouton doit > Génèrer un message(string) > Le mettre dans une file d'attente > Déclencher un évenement pour indiquer sa mise en file d'attente > > Une autre classe doit > Réagir à l'évenement et sortir le message de la file > Le traiter et afficher le résultat dans la textbox de la form
principale.
> > J'ai déclaré la file d'attente et l'évenement comme public dans la
classe
> Form1 > L'appui du bouton effectue bien les action citée plus haut > Mais je n'arrive pas à comprendre comment devenir client de l'évenement
et
> de la file d'attente à partir d'une autre classe. Bien que déclaré
public,
> je n'accede ni à l'un ni à l'autre... > De plus j'aimerai comprendre pourquoi même en instanciant après > "Application.run" la Form1 (Form1 x = new Form1; x.Activate;), je
n'accede
> pas à x ni aux membres public de Form1 à partir d'une autre classe... > > Si quelqu'un pouvait me mettre sur la voix et me donner quelques > explications, ce serait NiCr. > > Bruno > >
Bruno
Merci de votre aide en tout cas. Geoffrey a bien cerné le prob. Mon problème n'est effectivement pas de déclarer des délégués ni de savoir m'abonner à un évenement mais d'arriver à faire communiquer 2 process de la même application à travers une file d'attente commune.
Mon premier process est représenté par la Form1 qui génère un message à chaque appui de bouton et le met en file d'attente. la file d'attente et l'évenement étant déclaré en public dans la classe Form1, il y accède sans problème. Mon deuxième process est représenté par une classe (Sous classe de la Form1 dans mon test) qui est sensé récupérer le message sur l'activation de l'évenement et donc avoir accès à la file d'attente et pouvoir s'abonner à l'évenement, ce que je n'arrive pas à faire.
J'ai essayé d'instancier mon deuxieme process dans le constructeur de Form1, mais je n'y ai pas acces à l'instance à l'intérieur de la procédure lancée à chaque appui de bouton ... C'est pourtant une procédure de la classe ...
"Geoffrey" a écrit dans le message de news: #uwzK$
Il faut aller bien plus loin que ca je crois. il ne sait probablement pas faire de delegate puise la classe metier ne connait pas les objet public de form1.
Le mieux serait p-e d'avoir la file et l'evenement dans la classe metier.
Form1 instancie (p-e également possible en statique) la classe metier, ajoute dans la file et appelle l'evenement (simple methode)
"Paul Bacelar" a écrit dans le message de news:%23QpurV% > Un bon bouquin s'impose. > > Le mot clé delegate et l'opération =+ sur ceux-ci de montreront bien des > merveilles. > -- > Paul Bacelar > MVP VC++ > > > "Bruno" wrote in message > news: > > Bonjour, > > > > J'essaye en vain de creer une appli Windows Form qui puisse faire > > communiquer une couche métier et une couche présentation. > > Pour tester cette possibilité, j'ai créé un projet Windows Form et
j'ai
> > mis > > un bouton et une textbox dans la form principale(Form1) > > > > L'appui du bouton doit > > Génèrer un message(string) > > Le mettre dans une file d'attente > > Déclencher un évenement pour indiquer sa mise en file d'attente > > > > Une autre classe doit > > Réagir à l'évenement et sortir le message de la file > > Le traiter et afficher le résultat dans la textbox de la form principale. > > > > J'ai déclaré la file d'attente et l'évenement comme public dans la classe > > Form1 > > L'appui du bouton effectue bien les action citée plus haut > > Mais je n'arrive pas à comprendre comment devenir client de
l'évenement
et > > de la file d'attente à partir d'une autre classe. Bien que déclaré public, > > je n'accede ni à l'un ni à l'autre... > > De plus j'aimerai comprendre pourquoi même en instanciant après > > "Application.run" la Form1 (Form1 x = new Form1; x.Activate;), je n'accede > > pas à x ni aux membres public de Form1 à partir d'une autre classe... > > > > Si quelqu'un pouvait me mettre sur la voix et me donner quelques > > explications, ce serait NiCr. > > > > Bruno > > > > > >
Merci de votre aide en tout cas.
Geoffrey a bien cerné le prob. Mon problème n'est effectivement pas de
déclarer des délégués ni de savoir m'abonner à un évenement mais d'arriver à
faire communiquer 2 process de la même application à travers une file
d'attente commune.
Mon premier process est représenté par la Form1 qui génère un message à
chaque appui de bouton et le met en file d'attente.
la file d'attente et l'évenement étant déclaré en public dans la classe
Form1, il y accède sans problème.
Mon deuxième process est représenté par une classe (Sous classe de la Form1
dans mon test) qui est sensé récupérer le message sur l'activation de
l'évenement et donc avoir accès à la file d'attente et pouvoir s'abonner à
l'évenement, ce que je n'arrive pas à faire.
J'ai essayé d'instancier mon deuxieme process dans le constructeur de Form1,
mais je n'y ai pas acces à l'instance à l'intérieur de la procédure lancée à
chaque appui de bouton ... C'est pourtant une procédure de la classe ...
"Geoffrey" <AEnlevergeoffrey@dufour.be> a écrit dans le message de news:
#uwzK$BGGHA.1424@TK2MSFTNGP12.phx.gbl...
Il faut aller bien plus loin que ca je crois.
il ne sait probablement pas faire de delegate puise la classe metier ne
connait pas les objet public de form1.
Le mieux serait p-e d'avoir la file et l'evenement dans la classe metier.
Form1 instancie (p-e également possible en statique) la classe metier,
ajoute dans la file et appelle l'evenement (simple methode)
"Paul Bacelar" <paul.bacelar@PASDESPAMlaposte.net> a écrit dans le message
de news:%23QpurV%23FGHA.3064@TK2MSFTNGP10.phx.gbl...
> Un bon bouquin s'impose.
>
> Le mot clé delegate et l'opération =+ sur ceux-ci de montreront bien des
> merveilles.
> --
> Paul Bacelar
> MVP VC++
>
>
> "Bruno" <bruno.remeyse@wanadoo.fr> wrote in message
> news:O8gbUm7FGHA.376@TK2MSFTNGP12.phx.gbl...
> > Bonjour,
> >
> > J'essaye en vain de creer une appli Windows Form qui puisse faire
> > communiquer une couche métier et une couche présentation.
> > Pour tester cette possibilité, j'ai créé un projet Windows Form et
j'ai
> > mis
> > un bouton et une textbox dans la form principale(Form1)
> >
> > L'appui du bouton doit
> > Génèrer un message(string)
> > Le mettre dans une file d'attente
> > Déclencher un évenement pour indiquer sa mise en file d'attente
> >
> > Une autre classe doit
> > Réagir à l'évenement et sortir le message de la file
> > Le traiter et afficher le résultat dans la textbox de la form
principale.
> >
> > J'ai déclaré la file d'attente et l'évenement comme public dans la
classe
> > Form1
> > L'appui du bouton effectue bien les action citée plus haut
> > Mais je n'arrive pas à comprendre comment devenir client de
l'évenement
et
> > de la file d'attente à partir d'une autre classe. Bien que déclaré
public,
> > je n'accede ni à l'un ni à l'autre...
> > De plus j'aimerai comprendre pourquoi même en instanciant après
> > "Application.run" la Form1 (Form1 x = new Form1; x.Activate;), je
n'accede
> > pas à x ni aux membres public de Form1 à partir d'une autre classe...
> >
> > Si quelqu'un pouvait me mettre sur la voix et me donner quelques
> > explications, ce serait NiCr.
> >
> > Bruno
> >
> >
>
>
Merci de votre aide en tout cas. Geoffrey a bien cerné le prob. Mon problème n'est effectivement pas de déclarer des délégués ni de savoir m'abonner à un évenement mais d'arriver à faire communiquer 2 process de la même application à travers une file d'attente commune.
Mon premier process est représenté par la Form1 qui génère un message à chaque appui de bouton et le met en file d'attente. la file d'attente et l'évenement étant déclaré en public dans la classe Form1, il y accède sans problème. Mon deuxième process est représenté par une classe (Sous classe de la Form1 dans mon test) qui est sensé récupérer le message sur l'activation de l'évenement et donc avoir accès à la file d'attente et pouvoir s'abonner à l'évenement, ce que je n'arrive pas à faire.
J'ai essayé d'instancier mon deuxieme process dans le constructeur de Form1, mais je n'y ai pas acces à l'instance à l'intérieur de la procédure lancée à chaque appui de bouton ... C'est pourtant une procédure de la classe ...
"Geoffrey" a écrit dans le message de news: #uwzK$
Il faut aller bien plus loin que ca je crois. il ne sait probablement pas faire de delegate puise la classe metier ne connait pas les objet public de form1.
Le mieux serait p-e d'avoir la file et l'evenement dans la classe metier.
Form1 instancie (p-e également possible en statique) la classe metier, ajoute dans la file et appelle l'evenement (simple methode)
"Paul Bacelar" a écrit dans le message de news:%23QpurV% > Un bon bouquin s'impose. > > Le mot clé delegate et l'opération =+ sur ceux-ci de montreront bien des > merveilles. > -- > Paul Bacelar > MVP VC++ > > > "Bruno" wrote in message > news: > > Bonjour, > > > > J'essaye en vain de creer une appli Windows Form qui puisse faire > > communiquer une couche métier et une couche présentation. > > Pour tester cette possibilité, j'ai créé un projet Windows Form et
j'ai
> > mis > > un bouton et une textbox dans la form principale(Form1) > > > > L'appui du bouton doit > > Génèrer un message(string) > > Le mettre dans une file d'attente > > Déclencher un évenement pour indiquer sa mise en file d'attente > > > > Une autre classe doit > > Réagir à l'évenement et sortir le message de la file > > Le traiter et afficher le résultat dans la textbox de la form principale. > > > > J'ai déclaré la file d'attente et l'évenement comme public dans la classe > > Form1 > > L'appui du bouton effectue bien les action citée plus haut > > Mais je n'arrive pas à comprendre comment devenir client de
l'évenement
et > > de la file d'attente à partir d'une autre classe. Bien que déclaré public, > > je n'accede ni à l'un ni à l'autre... > > De plus j'aimerai comprendre pourquoi même en instanciant après > > "Application.run" la Form1 (Form1 x = new Form1; x.Activate;), je n'accede > > pas à x ni aux membres public de Form1 à partir d'une autre classe... > > > > Si quelqu'un pouvait me mettre sur la voix et me donner quelques > > explications, ce serait NiCr. > > > > Bruno > > > > > >