To reproduce: - Set the MaximizedBounds property so the form takes the entire right part of the screen, the change the windows state at runtime: private void radButton1_Click(object sender, EventArgs e) { setFormMaximizedBounds(200); } private void radButton2_Click(object sender, EventArgs e) { setFormMaximizedBounds(-1); } private void setFormMaximizedBounds(int distance) { if (distance >= 0) { var ownerScreen = Screen.FromControl(this); var workingArea = ownerScreen.WorkingArea; var x = workingArea.X + distance; var y = workingArea.Y; var w = workingArea.Width - distance; var h = workingArea.Height; this.MaximizedBounds = new Rectangle(x, y, w, h); } else { this.MaximizedBounds = new Rectangle(0, 0, 0, 0); } if (this.WindowState == FormWindowState.Maximized) { this.WindowState = FormWindowState.Normal; this.WindowState = FormWindowState.Maximized; } }