MDI

Signaler
Messages postés
117
Date d'inscription
dimanche 14 novembre 2004
Statut
Membre
Dernière intervention
19 janvier 2008
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
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

Messages postés
117
Date d'inscription
dimanche 14 novembre 2004
Statut
Membre
Dernière intervention
19 janvier 2008

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
Messages postés
117
Date d'inscription
dimanche 14 novembre 2004
Statut
Membre
Dernière intervention
19 janvier 2008

Personne peut m'aider, svp, j'suis vraiment bloqué
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
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
Messages postés
117
Date d'inscription
dimanche 14 novembre 2004
Statut
Membre
Dernière intervention
19 janvier 2008

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
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
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