2008-11-26 7 views
1

J'essaye de centrer un formulaire dans VB.net. Au lieu de centrer la forme, elle se termine environ à mi-chemin entre le centre et 0,0 (en haut à gauche)..Net FormStartPosition.CenterScreen non centré

J'utilise le code

Me.StartPosition = FormStartPosition.CenterScreen

Ce qui est appelé à partir de la méthode IntializeDisplay, ce qui est appelé à partir de la méthode Form Load. Je suppose que je mets en place une certaine marge qui fausse le calcul du centre, mais je ne suis pas sûr de ce que cela pourrait être.

Si quelqu'un a des idées, il serait très apprécié.

Merci.

Répondre

0

Avez-vous une forme de redimensionnement/logique de positionnement implémentée? Si oui, commentez-le et essayez à nouveau.

Essayez de définir le Form.StartPosition dans le concepteur (qui le définira dans InitializeComponent()) au lieu de dans l'événement Load. Essayez de réinitialiser la valeur Form.Location et Form.Size. Si votre formulaire est localisé, supprimez l'entrée Form.Location ET Form.Size dans le fichier de ressources.

+0

Merci, je vais essayer et vous répondre. –

3

Je pense que vous définissez la valeur de StartPosition trop tard dans le flux - au moment où Form.Load est appelé, le chargement est déjà terminé et le formulaire a une position affectée.

Définissez un point d'arrêt sur la ligne de code citée dans votre question et examinez la position des formulaires. Elle se trouve déjà à l'emplacement où elle apparaît.

Pour avoir l'effet souhaité, la valeur de StartPosition doit être définie avant que le formulaire ne commence son traitement de localisation intégré. Je suggère de placer le code dans le constructeur de formulaire, après l'appel à InitializeComponent().

+0

Ce n'est que partiellement vrai.Si le formulaire est redimensionné ailleurs ou est défini sur la taille automatique, il doit vraiment être recentré dans la méthode de chargement. –

4

ajouter ceci dans l'événement et cela fonctionnera:

Public Sub New() 

    ' This call is required by the Windows Form Designer. 
    InitializeComponent() 
    ' Add any initialization after the InitializeComponent() call. 
    Me.StartPosition = FormStartPosition.CenterScreen 

End Sub 
0

Au lieu de compter sur l'initialisation du formulaire pour gérer sa position de départ, essayez d'appeler la méthode pour centrer la forme. Cela vous permet de centrer le formulaire même après avoir modifié la taille après l'affichage.

Exemple:

Me.CenterToScreen() 

Ou

Me.CenterToParent() 

Selon l'endroit où vous essayez de centrer la forme.

1

Si vous redimensionner la forme, ou que vous utilisez la taille auto vous devez utiliser un

Me.CenterToScreen() 
commande

à la fin de l'événement Load.

Questions connexes