MDI

thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008 - 26 mai 2006 à 20:26
cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 29 mai 2006 à 22:35
Bonjour,

C'est encore le newbee de service :)
J'ai un petit souci avec les MDI, j'appel un form de la façon suivante

frmSelectPrestation FormSelPrestation =
new
frmSelectPrestation();
FormSelPrestation.MdiParent =
this.MdiParent;
FormSelPrestation.Show();

Si je l'appelle tout de suite, tout va bien mais si avant j'ai appelé une form child avec l'option WindowState = Maximized
Toutes les forms child que j'appelle ensuite sont en taille maximized

Quelqu'un à une idée ??

Merci

5 réponses

thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008
27 mai 2006 à 12:53
En me relisant, je me rend compte que ce n'est pas très clair, donc voilà ce que je veux faire :
J'ai créer un fenêtre principale MDI frmMain (propriété isMdiContainer = True)

A partir d'un menu j'appelle un autre form (fille)

frmFacture FormFacture = newfrmFacture();
FormFacture.MdiParent = this;
FormFacture.WindowState = FormWindowState.Maximized;
FormFacture.Show();

A partir de cette nouvelle form j'appelle par un bouton un autre form de sélection
Ce que je voudrais faire, c'est appelé cette form comme une dialog mais qui reste dans le cadre delimité par la fenêtre MDI (frmMain)

j'ai essayé :
frmSelectPrestation FormSelPrestation = newfrmSelectPrestation();
FormSelPrestation.ShowDialog();
Mais dans ce cas, la fenêtre peut dépasser le cadre de la MDI

et ensuite j'ai essayé
frmSelectPrestation FormSelPrestation = newfrmSelectPrestation();
FormSelPrestation.MdiParent = this.MdiParent;
FormSelPrestation.Show();
Mais là, elle apparait en taille maximale et en plus je peux retourner sur l'autre form (ce que je ne veux surtout pas)

Je pensais que c'était un truc simple à faire, mais apparement pas

Merci à tous pour votre aide
0
thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008
29 mai 2006 à 11:14
Personne peut m'aider, svp, j'suis vraiment bloqué
0
cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 mai 2006 à 12:47
Salut,
Je n'ai pas cherché longtemps, mais je dirais que lorsque tu crées ta frmFacture il ne faut pas mettre le WindowState à FormWindowState.Maximized, car toutes les autres forms auront aussi ce WindowState là.
Essayes de remplacer cette ligne par qqch comme :

frmFacture.Size = this.Size;

VC# forever
=13319
0
thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008
29 mai 2006 à 20:08
Salut,

D'abord, merci pour ta réponse.
Mais en fait, je veux que la form frmFacture soit en maximized, ce que je voudrais c'est que les suivantes ne le soit pas.
D'après ce que j'ai lu sur le forum, j'ai l'impression qu'il n'est pas possible d'avoir des dialog (qui ne dépassent pas le cadre du container principale) dans une appli MDI
Ca me parait vraiment étrange car c'est une pratique courante dans une appli de gestion
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 mai 2006 à 22:35
Si tu fais comme ceci, ta form ne dépassera pas la limite du container principal (c'est ce que tu proposes plus haut) :

frmSelectPrestation FormSelPrestation = newfrmSelectPrestation();
FormSelPrestation.MdiParent = this.MdiParent;
FormSelPrestation.Show();

Le problème (comme tu le dis), c'est qu'elle est en maximized, parce que le premier child que tu as crée l'était aussi. Si tu tentes par le code de faire qqch comme :

frmSelectPrestation FormSelPrestation = newfrmSelectPrestation();
FormSelPrestation.MdiParent = this.MdiParent;
FormSelPrestation.WindowState = FormWindowState.Normal;

FormSelPrestation.Show();

Ca ne marche pas (je trouve ça con, mais c'est comme ça).
Je ne sais pas si y'a une solution plus simple que ça, mais ce que je propose (en attendant mieux), c'est de ne pas faire un :

FormFacture.WindowState = FormWindowState.Maximized;

lors de la création de ton premier child, mais de setter la taille manuellement, avec la propriété Size. Donc :

FormFacture.Size = this.Size; // Ce que je proposais dans mon dernier post

// Malheureusement, là elle est un peu trop grande, donc tu devras jouer avec la taille pour que ça joue, ok?

Ensuite, tu pourras sans problème faire :

frmSelectPrestation FormSelPrestation = newfrmSelectPrestation();
FormSelPrestation.MdiParent = this.MdiParent;
FormSelPrestation.Show();

Ca marche, mais c'est pas très élégant...

VC# forever
=13319
0
Rejoignez-nous