Как легко найти расположение экрана формы Расположение в среде с несколькими мониторами?

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

1 ответ

Решение
/// <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;
}
Другие вопросы по тегам