Как легко найти расположение экрана формы Расположение в среде с несколькими мониторами? - PullRequest
4 голосов
/ 08 сентября 2010

В приложении winform C #, работающем в среде с несколькими мониторами (рабочий стол растянут на 2 или 3 монитора), свойство Location формы представляет местоположение формы на составном рабочем столе, а не местоположение формы на физическомэкран.Существует ли простой способ найти расположение формы в экранных координатах для экрана, на котором она находится?Таким образом, если форма находится в верхнем левом углу 2-го или 3-го дисплея, расположение будет (0,0)?

1 Ответ

4 голосов
/ 08 сентября 2010
/// <summary>Returns the location of the form relative to the top-left corner
/// of the screen that contains the top-left corner of the form, or null if the
/// top-left corner of the form is off-screen.</summary>
public Point? GetLocationWithinScreen(Form form)
{
    foreach (Screen screen in Screen.AllScreens)
        if (screen.Bounds.Contains(form.Location))
            return new Point(form.Location.X - screen.Bounds.Left,
                             form.Location.Y - screen.Bounds.Top);

    return null;
}
...