Есть ли более элегантный способ размещения моих форм? - PullRequest
0 голосов
/ 11 февраля 2012

Я довольно начинающий программист, который недавно придумал решение, которое работает для моего проекта, однако я всегда ищу способы улучшить свой код.

По сути, у меня есть всплывающая форма с настройками, и я искал способ поместить ее рядом с моей основной формой, но не закрывать ее и не показывать частично за пределами экрана, на котором включена основная форма. Я придумал это, но он не очень динамический , потому что он проверяет только 4 различных местоположения, и если ни одно из них не работает, он использует значение по умолчанию, то есть центральный экран.

Вот что у меня есть:

private void Place_Form(Form formToPlaceNextTo, Form formToPlace)
    {
        Point alignRightTop = new Point(m_parent.Location.X + m_parent.Width, m_parent.Location.Y);
        Point alignRightBottom = new Point(m_parent.Location.X + m_parent.Width, (m_parent.Location.Y + m_parent.Height) - this.Height);
        Point alignLeftTop = new Point(m_parent.Location.X - this.Width, m_parent.Location.Y);
        Point alignLeftBottom = new Point(m_parent.Location.X - this.Width, (m_parent.Location.Y + m_parent.Height) - this.Height);

        if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignRightTop.X, alignRightTop.Y, this.Width, this.Height)))
        {
            this.Location = alignRightTop;
            return;
        }
        if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignRightBottom.X, alignRightBottom.Y, this.Width, this.Height)))
        {
            this.Location = alignRightBottom;
            return;
        }
        if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignLeftTop.X, alignLeftTop.Y, this.Width, this.Height)))
        {
            this.Location = alignLeftTop;
            return;
        }
        if (Screen.FromControl(formToPlace).WorkingArea.Contains(new Rectangle(alignLeftBottom.X, alignLeftBottom.Y, this.Width, this.Height)))
        {
            this.Location = alignLeftBottom;
            return;
        }
    }

Любые предложения или предпочтительные методы кодирования?

1 Ответ

0 голосов
/ 04 января 2013

По предложению Snowbear, я использовал другой сайт SE, чтобы задать тот же вопрос, и получил хороший ответ.

https://codereview.stackexchange.com/questions/8881/is-there-a-more-elegant-way-of-arranging-my-forms

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...