J'ai une forme qui ouvre une autre forme.
Ce que je veux faire est de positionner la forme nouvellement ouverte suivante (du côté droit) sur la forme déjà visible. p>
donc j'ai besoin de pour positionner le nouveau formulaire à l'endroit où se termine le formulaire actuel (corrigez-moi si mal). P>
donc je devrai faire quelque chose comme: p>
newform.Left = this.Right + SystemInformation.BorderSize.Width; newform.Left = this.Right + (SystemInformation.BorderSize.Width * 2); newform.SetDesktopLocation(this.Location.X + this.Size.Width, this.Location.Y);
4 Réponses :
Essayez
newform.Left = oldform.Right + SystemInformation.BorderSize.Width;
@ ECLYPSE19: OK Se rapproche: Cependant, cela ne prend pas en compte la bordure du formulaire.
Vous pouvez toujours ajouter une valeur supplémentaire à celle-ci - essayez NewForm.left = Oldform.right + OldForm.bordersize
@ ECLYPSE19: .right code> = même problème. Et il n'y a pas de
.bordersize code> propriété.
Woops - Ne tenez pas compte mon dernier commentaire. Essayez d'ajouter Systeminformation.bordersize à l'OldForm.right. Cela tirera la valeur de la taille de la bordure du système en pixels et l'ajoutera à la valeur de la merde.
@ ECLYPSE19: Il chevauche toujours un peu un peu lorsque j'utilise: newform.left = this.right + systemformation.bordersize.width; code> J'ai également essayé:
aperçu.left = this.right + ( Systeminformation.bordersize.Width * 2); code> qui ne fonctionne pas non plus :(
Si vous avez besoin de fabriquer de légers ajustements, augmentez simplement les pixels supplémentaires en être ajoutés avec un +1 ou +2 ou +3, etc.
@ ECLYPSE19: J'y ai pensé. Cependant, je suis inquiet que la différence soit différente du système au système. Si vous êtes sûr que cela ne sera pas le cas, je vais descendre cette route.
Essayez SIZEBORDERWIDITH au lieu de la bordure.
Les modifications du système à système seront reportées avec le systèmeInformation.bordersize.Width. On dirait que l'ajustement supplémentaire est strictement votre préférence et doit correspondre du système au système. Êtes-vous sûr que le léger chevauchement n'est pas dû à celui sélectionné (et donc d'avoir une bordure plus profonde)?
Cela fonctionne pour moi:
Form1 nForm = new Form1(); nForm.Show(); nForm.SetDesktopLocation(this.Location.X + this.Size.Width, this.Location.Y);
n'a pas fonctionné, n'est-ce pas là-bas d'autres paramètres que je dois basculer?
J'ai corrigé mon problème en appelant "int _left = this.parent.location.x + ceci.parent.size.width; int _top = this.parent.location.y;"
Votre code fonctionne bien, mais il vous suffit de le mettre après votre méthode NewForm.show (). P>
Je sais que cette question est ancienne, mais pour que quiconque vienne ici à la recherche d'une réponse, vous devez prendre en compte la taille des frontières de la forme. La taille de la frontière sera différente selon le formulaire code> code>.