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

MessageBox et MsgBox

2 réponses
Avatar
Laure
Bonjour,

Je travaille sur WindowsForm, Framework 1.1, VS.Net 2003.

Existe-t-il une différence entre les pop up affichées via MessageBox.Show et
celles affichées par MsgBox() ? Je parle caractéristiques de la fenêtre
ouverte : censée être modale ou non, apparaître ou non dans la barre des
application...

Quelque soit celle utilisée j'ai remarqué un comportement étrange sur mon
application : si mon application a le focus et que j'affiche une de ces pop
up, elles sont modales. Impossible d'accéder à l'application tant que l'on
n'a pas validé leur message. De plus, elles n'apparaissent pas dans la barre
des applications. Tout cela tombe bien car c'est ce qu'on leur demande.

Par contre, si mon application perd le focus avant l'affichage de la pop up,
celle-ci n'est plus du tout modale et apparait dans la barre des tâches...

Quelqu'un aurait une explication ?

Merci d'avance,

Laure.

2 réponses

Avatar
Gilles TOURREAU
Le Mon, 10 Sep 2007 19:10:01 +0200, Laure
a écrit:

Bonjour,

Je travaille sur WindowsForm, Framework 1.1, VS.Net 2003.

Existe-t-il une différence entre les pop up affichées via
MessageBox.Show et
celles affichées par MsgBox() ? Je parle caractéristiques de la fenêtre
ouverte : censée être modale ou non, apparaître ou non dans la barre des
application...

Quelque soit celle utilisée j'ai remarqué un comportement étrange sur mon
application : si mon application a le focus et que j'affiche une de ces
pop
up, elles sont modales. Impossible d'accéder à l'application tant que
l'on
n'a pas validé leur message. De plus, elles n'apparaissent pas dans la
barre
des applications. Tout cela tombe bien car c'est ce qu'on leur demande.

Par contre, si mon application perd le focus avant l'affichage de la pop
up,
celle-ci n'est plus du tout modale et apparait dans la barre des
tâches...

Quelqu'un aurait une explication ?

Merci d'avance,

Laure.



MsgBox comme (toutes les classes et méthodes présentes dans
Microsoft.VisualBasic) est une méthode conçues pour les utilisateurs
migrant leur application de VB6. Ces fonctions ne sont là uniquement pour
éviter que les utilisateurs de VB6 ne soient "déroutées" et pour leur
faciliter la migration.

Tout ce qui est contenu dans Microsoft.VisualBasic fait appel aux méthodes
du Framework .NET. En l'occurence MsgBox fait appel à MessageBox du
Framework.

En ce qui concerne les messages modaux, certaines méthode de Show()
possèdent un paramètre owner qui représente la boite de dialogue possédant
votre pop up... C'est à dire que si celui-ci est spécifié votre message
sera modale par rapport à son "owner".
En ce qui concerne le comportement de MsgBox, celui-ci "cherche"
automatiquement la fenêtre active pour qu'il devient d'owner de votre
message. Si aucune fenêtre n'est activée votre message n'est plus modale.
Ce comportement reprend celui de VB6...

Pour un développement nouveau (et non une migration), il faut éviter
d'utiliser les classes et méthodes à Microsoft.VisualBasic... Préférez les
classes et méthodes du Framework... Cela permet dans une équipe mélangées
de développeurs VB/C# de comprendre le code de l'un et de l'autre sans
avoir du code spécifique à VB...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Laure
Bonjour,

Effectivement, après le dépôt de mon message j'ai découvert la notion
d'owner et cela règle tous mes problèmes.
Merci pour ces explications plus fines.

Laure.

"Gilles TOURREAU" a écrit :

Le Mon, 10 Sep 2007 19:10:01 +0200, Laure
a écrit:

> Bonjour,
>
> Je travaille sur WindowsForm, Framework 1.1, VS.Net 2003.
>
> Existe-t-il une différence entre les pop up affichées via
> MessageBox.Show et
> celles affichées par MsgBox() ? Je parle caractéristiques de la fenêtre
> ouverte : censée être modale ou non, apparaître ou non dans la barre des
> application...
>
> Quelque soit celle utilisée j'ai remarqué un comportement étrange sur mon
> application : si mon application a le focus et que j'affiche une de ces
> pop
> up, elles sont modales. Impossible d'accéder à l'application tant que
> l'on
> n'a pas validé leur message. De plus, elles n'apparaissent pas dans la
> barre
> des applications. Tout cela tombe bien car c'est ce qu'on leur demande.
>
> Par contre, si mon application perd le focus avant l'affichage de la pop
> up,
> celle-ci n'est plus du tout modale et apparait dans la barre des
> tâches...
>
> Quelqu'un aurait une explication ?
>
> Merci d'avance,
>
> Laure.

MsgBox comme (toutes les classes et méthodes présentes dans
Microsoft.VisualBasic) est une méthode conçues pour les utilisateurs
migrant leur application de VB6. Ces fonctions ne sont là uniquement pour
éviter que les utilisateurs de VB6 ne soient "déroutées" et pour leur
faciliter la migration.

Tout ce qui est contenu dans Microsoft.VisualBasic fait appel aux méthodes
du Framework .NET. En l'occurence MsgBox fait appel à MessageBox du
Framework.

En ce qui concerne les messages modaux, certaines méthode de Show()
possèdent un paramètre owner qui représente la boite de dialogue possédant
votre pop up... C'est à dire que si celui-ci est spécifié votre message
sera modale par rapport à son "owner".
En ce qui concerne le comportement de MsgBox, celui-ci "cherche"
automatiquement la fenêtre active pour qu'il devient d'owner de votre
message. Si aucune fenêtre n'est activée votre message n'est plus modale.
Ce comportement reprend celui de VB6...

Pour un développement nouveau (et non une migration), il faut éviter
d'utiliser les classes et méthodes à Microsoft.VisualBasic... Préférez les
classes et méthodes du Framework... Cela permet dans une équipe mélangées
de développeurs VB/C# de comprendre le code de l'un et de l'autre sans
avoir du code spécifique à VB...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr