public static void SetWindowPosition(Form form, IntPtr insertAfter, WindowPosition position)
{
form.StartPosition = FormStartPosition.Manual;
var location = new Point(0, 0);
switch (position)
{
case WindowPosition.TopRight:
location = new Point(Screen.PrimaryScreen.WorkingArea.Width - form.Width, 0);
break;
case WindowPosition.TopLeft:
location = new Point(0, 0);
break;
case WindowPosition.BottomRight:
location = new Point(Screen.PrimaryScreen.WorkingArea.Width - form.Width,
Screen.PrimaryScreen.WorkingArea.Height - form.Height);
break;
case WindowPosition.BottomLeft:
location = new Point(0, Screen.PrimaryScreen.WorkingArea.Height - form.Height);
break;
case WindowPosition.CenterScreen:
location = new Point((Screen.PrimaryScreen.WorkingArea.Width - form.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - form.Height) / 2);
break;
}
User32Interop.SetWindowPos(form.Handle.ToInt32(), insertAfter.ToInt32(), location.X, location.Y, 0, 0, 0x0040 | 0x0001);
}