OVH Cloud OVH Cloud

Méthode pour appeller toujours la même form..

8 réponses
Avatar
Sylvain
Bonjour.. j'aimerais avoir la m=E9thode =E0 utilis=E9 pour :=20
appeller un m=EAme formulaire de diff=E9rent formulaire, un=20
formulaire global =E0 l'application, ce formulaire est peut-
=EAtre d=E9j=E0 ouvert ou non. Quelle serait les commandes =E0=20
utilis=E9 pour v=E9rifier si le formulaire existe, s'il est=20
d=E9j=E0 ouvert, et pour qu'il soit global =E0 l'application..,=20
j'esp=E8re avoir =E9t=E9 assez clair dans mon interrogation..

Merci
Sylvain

8 réponses

Avatar
LEBRUN Thomas
J'avoue que je n'ai pas trop compris ton pb....

Tom



----- Sylvain a écrit : ----

Bonjour.. j'aimerais avoir la méthode à utilisé pour :
appeller un même formulaire de différent formulaire, un
formulaire global à l'application, ce formulaire est peut
être déjà ouvert ou non. Quelle serait les commandes à
utilisé pour vérifier si le formulaire existe, s'il est
déjà ouvert, et pour qu'il soit global à l'application..,
j'espère avoir été assez clair dans mon interrogation.

Merc
Sylvai
Avatar
Elp
Salut Sylvain,

"Sylvain" wrote in message
news:1fc4201c45861$66723810$
Bonjour.. j'aimerais avoir la méthode à utilisé pour :
appeller un même formulaire de différent formulaire, un
formulaire global à l'application, ce formulaire est peut-
être déjà ouvert ou non. Quelle serait les commandes à
utilisé pour vérifier si le formulaire existe, s'il est
déjà ouvert, et pour qu'il soit global à l'application..,
j'espère avoir été assez clair dans mon interrogation..


Je pense qu'il te faut regarder du coté des singleton patterns (je pense que
c´est ça, je ne suis pas un pro en ce qui concerne les patterns). En gros,
tu fait une classe qui a ta form en variable membre et qui possede une
propriété statique Form() par exemple. Cette propriété crée la form si elle
ne l'est pas déjà et la retourne. Cela te permettra d´accéder à ta form de
n´importe quelle autre classe. Exemple:

public class GlobalForms
{
private static Form1 form1 = null;

private GlobalForms() {}

public static Form
{
get
{
if (form1 == null)
form1 = new Form1();
return form1;
}
}

}
Avatar
Sylvain
merci beaucoup pour les hint.., je vérifie.. ça..
Sylvain

-----Message d'origine-----
Salut Sylvain,

"Sylvain" wrote in


message
news:1fc4201c45861$66723810$
Bonjour.. j'aimerais avoir la méthode à utilisé pour :
appeller un même formulaire de différent formulaire, un
formulaire global à l'application, ce formulaire est peut-
être déjà ouvert ou non. Quelle serait les commandes à
utilisé pour vérifier si le formulaire existe, s'il est
déjà ouvert, et pour qu'il soit global à l'application..,
j'espère avoir été assez clair dans mon interrogation..


Je pense qu'il te faut regarder du coté des singleton


patterns (je pense que
c´est ça, je ne suis pas un pro en ce qui concerne les


patterns). En gros,
tu fait une classe qui a ta form en variable membre et


qui possede une
propriété statique Form() par exemple. Cette propriété


crée la form si elle
ne l'est pas déjà et la retourne. Cela te permettra


d´accéder à ta form de
n´importe quelle autre classe. Exemple:

public class GlobalForms
{
private static Form1 form1 = null;

private GlobalForms() {}

public static Form
{
get
{
if (form1 == null)
form1 = new Form1();
return form1;
}
}

}


.



Avatar
Zazar
Bonjour,

public class GlobalForms
{
private static Form1 form1 = null;

private GlobalForms() {}

public static Form
{
get
{
if (form1 == null)
form1 = new Form1();
return form1;
}
}

}



Attention, ce code n'est pas threadsafe, et dans le cas d'existence d'autres
méthodes dans la classe GlobalForms, il n'y a aucune garantie que la
variable Form1 n'est pas modifiée.
Dans le cas où on n'a pas besoin d'une évaluation paresseuse, le code
suivant implémente correctement le singleton pattern :

public sealed class GlobalForms
{
static readonly Form1 form1 = new Form1();

GlobalForms() {}

public static Form {
get {
return form1;
}
}
}

--
Zazar
Avatar
Elp
> Dans le cas où on n'a pas besoin d'une évaluation paresseuse, le code
suivant implémente correctement le singleton pattern :



Scuse, j´avais en fait donné le code du singleton pattern avec lazy
initialization (et hop ! d´un coup d´un seul je sors la tete heute et en
plus je passe pour un mec balaise :-)
Avatar
Zazar
Bonsoir,

Scuse, j´avais en fait donné le code du singleton pattern avec lazy
initialization (et hop ! d´un coup d´un seul je sors la tete heute et en
plus je passe pour un mec balaise :-)



Désolé, mais même pas :)
Dans votre implémentation, form1 peut même être initialisée alors qu'aucun
accés n'y est fait.

--
Zazar
Avatar
Elp
"Zazar" wrote in message
news:OUxrp$
Bonsoir,

> Scuse, j´avais en fait donné le code du singleton pattern avec lazy
> initialization (et hop ! d´un coup d´un seul je sors la tete haute et en
> plus je passe pour un mec balaise :-)

Désolé, mais même pas :)
Dans votre implémentation, form1 peut même être initialisée alors qu'aucun
accés n'y est fait.



Comment ça ? Form1 n´est initialisée que lorsque que quelqu´un applele la
propriété Form. Donc elle est bien accédée à ce moment là. Bien sur ce
quelqu´un n´est pas obligé d´en faire quelque chose de cette form mais je
n´y peux rien là. J´ai loupé un truc ?

En tout cas, j´abandone... J´avais mentionné singleton dans mon premier
poste car je savais que c´était un peu le genre de truc qu´il cherchais mais
je n´ai pas pris e temps de vraiment étudier ce que c´était ni de donner une
implémentation correcte. C´était juste pour le mettre sur la voie. J´aurai
du fermer ma grande g**** au lieu de vouloir utiliser des grands mots je
crois.
Avatar
Zazar
Bonjour,

Comment ça ? Form1 n´est initialisée que lorsque que quelqu´un applele la
propriété Form. Donc elle est bien accédée à ce moment là. Bien sur ce
quelqu´un n´est pas obligé d´en faire quelque chose de cette form mais je
n´y peux rien là. J´ai loupé un truc ?



Oups. Je me suis trompé. Votre implémentation permet bien une évaluation
paresseuse contrairement à la mienne qui peut provoquer la création de
l'objet sans aucun accés dessus.


En tout cas, j´abandone... J´avais mentionné singleton dans mon premier
poste car je savais que c´était un peu le genre de truc qu´il cherchais


mais
je n´ai pas pris e temps de vraiment étudier ce que c´était ni de donner


une
implémentation correcte. C´était juste pour le mettre sur la voie. J´aurai
du fermer ma grande g**** au lieu de vouloir utiliser des grands mots je
crois.



Désolé, si je vous ai induit en erreur. Votre code est bien une
implémentation du singleton pattern, non threadsafe et non sécurisée (au
sens où d'autres méthodes de la classe pourraient modifier
GlobalForms.form1) mais qui permet une évaluation paresseuse.

--
Zazar