Я хочу расположить две формы прямо рядом друг с другом в C # - PullRequest
7 голосов
/ 26 августа 2011

У меня есть одна форма, которая открывает другую форму.

То, что я хочу сделать, это расположить вновь открытую форму прямо рядом (с правой стороны) с уже видимой формой.

Так что мне нужно поместить новую форму туда, где заканчивается текущая форма (исправьте меня, если ошибся).

Так что мне нужно будет сделать что-то вроде:

newform.Left = this.endposition.right;

Свойство endposition это то, что я только что придумал (псевдокод).

Как получить конечную позицию с правой стороны текущей формы?

EDIT

Я пробовал несколько решений, но до сих пор ни одно из них не работало.

Я всегда получаю один и тот же результат:

Почему это происходит http://s1.postimage.org/f4fsbc6pa/why_o_why.png

Я пробовал следующие коды:

newform.Left = this.Right + SystemInformation.BorderSize.Width;

newform.Left = this.Right + (SystemInformation.BorderSize.Width * 2);

newform.SetDesktopLocation(this.Location.X + this.Size.Width, this.Location.Y);

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

Ответы [ 3 ]

10 голосов
/ 26 августа 2011

Это работает для меня:

        Form1 nForm = new Form1();
        nForm.Show();
        nForm.SetDesktopLocation(this.Location.X + this.Size.Width, this.Location.Y);
3 голосов
/ 26 августа 2011

Попробуйте

newform.Left = oldform.Right + SystemInformation.BorderSize.Width;

Это должно добавить ширину (в пикселях) границы к значению oldform.Right. Вы можете заменить (или добавить) SystemInformation.BorderSize.Width любым целым числом, которое вам подходит по вашему вкусу.

0 голосов
/ 23 февраля 2017

Ваш код работает нормально, но вы просто должны поместить его ПОСЛЕ вашего метода newForm.Show ().

...