2009-11-28 9 views
1

Je rencontre ce problème étrange avec la position de départ du formulaire enfant MDI. Voici mon code pour la position de départ, je voulais que ce soit le milieu gauche de le formulaire parent MDI.Problème de position de début de formulaire enfant MDI

 //show the task bar 
     ChildForm c1 = new ChildForm(); 

     c1.MdiParent = this; 
     c1.StartPosition = FormStartPosition.Manual; 
     c1.Location = new Point(0, this.Height/2); 

Chose étrange est à chaque fois que je commence ma forme mère Mdi, la barre de défilement vertical apparaissent et la forme de l'enfant est la position inférieure IMD de la moitié de la hauteur du formulaire parent MDI. Ensuite, si je fais défiler la barre de défilement vers le bas pour voir toute la forme enfant mdi, la barre de défilement disparaît. Après ce point, peu importe comment je change la taille de la forme parent mdi, la barre de défilement n'apparaîtra plus.

Est-ce que quelqu'un sait pourquoi?

En outre, je me demandais s'il est possible de cacher une forme enfant mdi avec seulement un contrôle de type poignée gauche dans la forme parent mdi. Si l'utilisateur clique sur ce descripteur, le formulaire s'affiche à nouveau. Si l'utilisateur clique ailleurs, le masque de forme. C'est un peu comme la barre des tâches de Windows.

J'ai essayé d'utiliser form.hide(), mais il masque toute la forme enfant mdi.

Merci

Alex

+2

Vous pourriez envisager de voter pour la bonne question! :-) – PSyLoCKe

Répondre

3

Est-il possible que votre calcul prend en compte les fenêtres barre en haut.

Vous pouvez jeter un oeil à PointToClient ou PointToScreen

+0

Oui, en utilisant PointToClient, résolvez le problème. Merci – alex

+0

Est-ce que quelqu'un connaît la réponse à ma deuxième question? – alex

+0

Que diable, après plusieurs essais, la barre de défilement apparaît à nouveau, cette fois, non seulement verticale, parfois, l'horizontale apparaît également. – alex

1

vous sholud minuse hauteur de forme de l'enfant et de la largeur comme celui-ci

c1.Location = new Point(0, (this.Height - c1.Height)/2);