Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation d'un objet ou d'une procédure depuis l'extérieur d'u n

4 réponses
Avatar
400GpJ
Une question de béotien : je ne parviens pas à appeller une procédure
(déclarée Public) située dans un Form, à partir d'un module (di d'ailleurs à
agir sur les objets des form).

En VB6 ça devait être Nom_Form!Nom_Procedure...comment fait-on en .net

D'avance merci pour la réponse, qui doit être triviale !)

4 réponses

Avatar
Osman MALIK [MS]
Bonjour,

Pour appeler une méthode publique dans une Form, il faut que vous fassiez :
- Soit modifier la méthode pour en faire une méthode statique ce qui ne vous
imposera pas de créer une instance de votre page.
- Soit créer un delegate de la méthode voulue dans la Form. Puis, appeler la
méthode dans la Form active à l'aide de Invoke (ex:
Form1.ActiveForm.Invoke(delegate, ...))

Cependant, pourriez vous m'expliquer pourquoi vous cherchez à appeler une
méthode de la Form en passant par un module? Cette approche peut en général
être évitée car lorsqu'une Form est concue, il est d'usage d'y inclure
uniquement le code utilisé pour le traitement ayant lieu sur le formulaire.
Les traitements plus génériques ou réalisant des traitements métiers sont
placés eux, dans un module car ils ne sont pas dépendants de l'instance Form
qui y fait appel. Celle-ci n'est utilisée que pour connaître les paramètres
que nous passerons à la méthode qui effectue le traitement.

Cordialement,

Osman MALIK
Microsoft France




"400GpJ" wrote in message
news:
Une question de béotien : je ne parviens pas à appeller une procédure
(déclarée Public) située dans un Form, à partir d'un module (di d'ailleurs
à
agir sur les objets des form).

En VB6 ça devait être Nom_Form!Nom_Procedure...comment fait-on en .net

D'avance merci pour la réponse, qui doit être triviale !)


Avatar
400GpJ
Merci pour ces réponses. Il s'agit peut-être d'un problème de conception.

Il s'agit d'un jeu. Le Form contient l'écran principal de l'interface
utilisateur. Un bouton déclenche des traitements dans un module. Selon la
situation ces traitements peuvent déclencher des modifications dans le Form
(affichage de messages, changements de valeurs...) tout en continuant à
s'exécuter.

J'aurais alors besoin de déclencher un traitement de mise à jour d'un
traitement des affichages (pas juste un rafraîchissement, mais un ensemble
d'opérations). De manière similaire je peux avoir à faire évoluer l'affichage
dans d'autres form (paramètres, tableaux de bord...) depuis un module (donc
tout mettre dans le Form, outre que ce serait illisble ne résoudrait que
partiellement mon problème).
Mon Form demeurant ouvert il me semblait donc relativement intuitif (mais
visiblement inexact) d'avoir une syntaxe du genre Nom_form.Nom_procedure.

D'avance merci pour vos conseils (la solution devant probablement être du
genre "mais c'est pas du tout comme ça qu'il faut faire " ;-)

Cordialement,
400GpJ


"Osman MALIK [MS]" a écrit :

Bonjour,

Pour appeler une méthode publique dans une Form, il faut que vous fassiez :
- Soit modifier la méthode pour en faire une méthode statique ce qui ne vous
imposera pas de créer une instance de votre page.
- Soit créer un delegate de la méthode voulue dans la Form. Puis, appeler la
méthode dans la Form active à l'aide de Invoke (ex:
Form1.ActiveForm.Invoke(delegate, ...))

Cependant, pourriez vous m'expliquer pourquoi vous cherchez à appeler une
méthode de la Form en passant par un module? Cette approche peut en général
être évitée car lorsqu'une Form est concue, il est d'usage d'y inclure
uniquement le code utilisé pour le traitement ayant lieu sur le formulaire.
Les traitements plus génériques ou réalisant des traitements métiers sont
placés eux, dans un module car ils ne sont pas dépendants de l'instance Form
qui y fait appel. Celle-ci n'est utilisée que pour connaître les paramètres
que nous passerons à la méthode qui effectue le traitement.

Cordialement,

Osman MALIK
Microsoft France




"400GpJ" wrote in message
news:
> Une question de béotien : je ne parviens pas à appeller une procédure
> (déclarée Public) située dans un Form, à partir d'un module (di d'ailleurs
> à
> agir sur les objets des form).
>
> En VB6 ça devait être Nom_Form!Nom_Procedure...comment fait-on en .net
>
> D'avance merci pour la réponse, qui doit être triviale !)





Avatar
Osman MALIK [MS]
Bonjour,

L'approche basée sur l'utilisation d'un délégué (Delegate) à la méthode de
rafraichissment présent dans le Form me parâti la plus approprié à votre
cas.

Cordialement,

Osman MALIK
Microsoft France


"400GpJ" wrote in message
news:
Merci pour ces réponses. Il s'agit peut-être d'un problème de conception.

Il s'agit d'un jeu. Le Form contient l'écran principal de l'interface
utilisateur. Un bouton déclenche des traitements dans un module. Selon la
situation ces traitements peuvent déclencher des modifications dans le
Form
(affichage de messages, changements de valeurs...) tout en continuant à
s'exécuter.

J'aurais alors besoin de déclencher un traitement de mise à jour d'un
traitement des affichages (pas juste un rafraîchissement, mais un ensemble
d'opérations). De manière similaire je peux avoir à faire évoluer
l'affichage
dans d'autres form (paramètres, tableaux de bord...) depuis un module
(donc
tout mettre dans le Form, outre que ce serait illisble ne résoudrait que
partiellement mon problème).
Mon Form demeurant ouvert il me semblait donc relativement intuitif (mais
visiblement inexact) d'avoir une syntaxe du genre Nom_form.Nom_procedure.

D'avance merci pour vos conseils (la solution devant probablement être du
genre "mais c'est pas du tout comme ça qu'il faut faire " ;-)

Cordialement,
400GpJ


"Osman MALIK [MS]" a écrit :

Bonjour,

Pour appeler une méthode publique dans une Form, il faut que vous fassiez
:
- Soit modifier la méthode pour en faire une méthode statique ce qui ne
vous
imposera pas de créer une instance de votre page.
- Soit créer un delegate de la méthode voulue dans la Form. Puis, appeler
la
méthode dans la Form active à l'aide de Invoke (ex:
Form1.ActiveForm.Invoke(delegate, ...))

Cependant, pourriez vous m'expliquer pourquoi vous cherchez à appeler une
méthode de la Form en passant par un module? Cette approche peut en
général
être évitée car lorsqu'une Form est concue, il est d'usage d'y inclure
uniquement le code utilisé pour le traitement ayant lieu sur le
formulaire.
Les traitements plus génériques ou réalisant des traitements métiers sont
placés eux, dans un module car ils ne sont pas dépendants de l'instance
Form
qui y fait appel. Celle-ci n'est utilisée que pour connaître les
paramètres
que nous passerons à la méthode qui effectue le traitement.

Cordialement,

Osman MALIK
Microsoft France




"400GpJ" wrote in message
news:
> Une question de béotien : je ne parviens pas à appeller une procédure
> (déclarée Public) située dans un Form, à partir d'un module (di
> d'ailleurs
> à
> agir sur les objets des form).
>
> En VB6 ça devait être Nom_Form!Nom_Procedure...comment fait-on en .net
>
> D'avance merci pour la réponse, qui doit être triviale !)







Avatar
400GpJ
Merci, je vais regarder...et certainement considérablement progresser dans
mon utilisation plutôt basic de VB.

Cordialement



"Osman MALIK [MS]" a écrit :

Bonjour,

L'approche basée sur l'utilisation d'un délégué (Delegate) à la méthode de
rafraichissment présent dans le Form me parâti la plus approprié à votre
cas.

Cordialement,

Osman MALIK
Microsoft France


"400GpJ" wrote in message
news:
> Merci pour ces réponses. Il s'agit peut-être d'un problème de conception.
>
> Il s'agit d'un jeu. Le Form contient l'écran principal de l'interface
> utilisateur. Un bouton déclenche des traitements dans un module. Selon la
> situation ces traitements peuvent déclencher des modifications dans le
> Form
> (affichage de messages, changements de valeurs...) tout en continuant à
> s'exécuter.
>
> J'aurais alors besoin de déclencher un traitement de mise à jour d'un
> traitement des affichages (pas juste un rafraîchissement, mais un ensemble
> d'opérations). De manière similaire je peux avoir à faire évoluer
> l'affichage
> dans d'autres form (paramètres, tableaux de bord...) depuis un module
> (donc
> tout mettre dans le Form, outre que ce serait illisble ne résoudrait que
> partiellement mon problème).
> Mon Form demeurant ouvert il me semblait donc relativement intuitif (mais
> visiblement inexact) d'avoir une syntaxe du genre Nom_form.Nom_procedure.
>
> D'avance merci pour vos conseils (la solution devant probablement être du
> genre "mais c'est pas du tout comme ça qu'il faut faire " ;-)
>
> Cordialement,
> 400GpJ
>
>
> "Osman MALIK [MS]" a écrit :
>
>> Bonjour,
>>
>> Pour appeler une méthode publique dans une Form, il faut que vous fassiez
>> :
>> - Soit modifier la méthode pour en faire une méthode statique ce qui ne
>> vous
>> imposera pas de créer une instance de votre page.
>> - Soit créer un delegate de la méthode voulue dans la Form. Puis, appeler
>> la
>> méthode dans la Form active à l'aide de Invoke (ex:
>> Form1.ActiveForm.Invoke(delegate, ...))
>>
>> Cependant, pourriez vous m'expliquer pourquoi vous cherchez à appeler une
>> méthode de la Form en passant par un module? Cette approche peut en
>> général
>> être évitée car lorsqu'une Form est concue, il est d'usage d'y inclure
>> uniquement le code utilisé pour le traitement ayant lieu sur le
>> formulaire.
>> Les traitements plus génériques ou réalisant des traitements métiers sont
>> placés eux, dans un module car ils ne sont pas dépendants de l'instance
>> Form
>> qui y fait appel. Celle-ci n'est utilisée que pour connaître les
>> paramètres
>> que nous passerons à la méthode qui effectue le traitement.
>>
>> Cordialement,
>>
>> Osman MALIK
>> Microsoft France
>>
>>
>>
>>
>> "400GpJ" wrote in message
>> news:
>> > Une question de béotien : je ne parviens pas à appeller une procédure
>> > (déclarée Public) située dans un Form, à partir d'un module (di
>> > d'ailleurs
>> > à
>> > agir sur les objets des form).
>> >
>> > En VB6 ça devait être Nom_Form!Nom_Procedure...comment fait-on en .net
>> >
>> > D'avance merci pour la réponse, qui doit être triviale !)
>>
>>
>>