Reputation: 571
I have a form that is centered according to the screen position that I resize by fontsize when loading. After resizing the location remains the same as it was before resizing so the form is no longer in the center, like I would like.
I've tried calling
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.ResumeLayout(false);
this.PerformLayout();
again after resizing (this is, I believe, the part of the code that centers the form in the beginning). It didn't work. I've also found some similar issues like this: "Keeping winform control centered after window resize " but they always only deal with centring a control, not the form itself.
Upvotes: 5
Views: 3525
Reputation: 7095
Add method for ResizeEnd
event. In method, when ResizeEnd
is fired, get current screen size (on multiple monitors, screen that contains current form) and then calculate form's position. Take a look at this example
private void Form1_ResizeEnd(object sender, EventArgs e)
{
Screen myScreen = Screen.FromControl(this);
Rectangle area = myScreen.WorkingArea;
this.Top = (area.Height - this.Height) / 2;
this.Left = (area.Width - this.Width) / 2;
}
Upvotes: 8