Showing a Windows form on a secondary monitor?

David Hodgson picture David Hodgson · Sep 1, 2009 · Viewed 93.7k times · Source

I'm trying to set a Windows Form on secondary monitor, as follows:

private void button1_Click(object sender, EventArgs e)
{
    MatrixView n = new MatrixView();
    Screen[] screens = Screen.AllScreens;
    setFormLocation(n, screens[1]);
    n.Show();
}

private void setFormLocation(Form form, Screen screen)
{
    // first method
    Rectangle bounds = screen.Bounds;
    form.SetBounds(bounds.X, bounds.Y, bounds.Width, bounds.Height);

    // second method
    //Point location = screen.Bounds.Location;
    //Size size = screen.Bounds.Size;

    //form.Left = location.X;
    //form.Top = location.Y;
    //form.Width = size.Width;
    //form.Height = size.Height;
}

The properties of bounds seem correct, but in both methods I've tried, this maximizes the form on the primary monitor. Any ideas?

Answer

Gengi picture Gengi · Jul 30, 2012
this.Location = Screen.AllScreens[1].WorkingArea.Location;

this is the Form reference.