Я бы рассмотрел использование свойства Control.Dock
вместе с одним из значений перечисления DockStyle
.
Возможно, вам также придется поиграть с Layout
, чтобы вы могли расположить элементы управления вашей формы по-разному в зависимости от выбранного DockStyle
.
На мой взгляд, вам нужно будет рассмотреть свойство Control.Location
, чтобы узнать, какое значение DockStyle
стыковать с вашей формой.
РЕДАКТИРОВАТЬ # 1
Ваша форма Windows имеет свойство Dock
, поскольку оно наследуется от Control
.
Давайте рассмотрим следующее:
Каждый раз, когда ваша форма приближается к вашей правой стороне экрана, например, или к контейнеру MDI, вы хотите закрепить правильно, верно? (Маленькая игра слов здесь ... = P) Итак, вы должны подписаться на событие Control.LocationChanged
.
private void myForm_LocationChanged(object sender, EventArgs e) {
if (this.Location.X > 900) then
this.Dock = DockStyle.Right;
else if (this.Location.X < 150) then
this.Dock = DockStyle.Left;
else if (this.Location.Y > 600) then
this.Dock = DockStyle.Bottom;
else if (this.Location.Y < 150) then
this.Dock = DockStyle.Top;
else
this.Dock = DockStyle.None;
}
Действительно, вместо постоянных значений вы должны использовать текущее разрешение рабочего стола и рассчитать из него соотношение, в котором вы хотите, чтобы произошла стыковка.
*** Отказ от ответственности: **** Этот код предоставляется как есть и не был протестирован. Надеемся, что этот алгоритм достаточно для того, чтобы провести вас через процесс стыковки по мере необходимости. Дальнейшая помощь может быть оказана по запросу. * =)
Кажется, что свойство Form.DesktopLocation
является правильным инструментом для работы, как и для вашего основного окна, например, для вашего MDI-контейнера. Что касается других окон, я бы согласился с тем, что выглядит как пример кода.
Помогает ли это?
РЕДАКТИРОВАТЬ # 2
Если вы хотите предотвратить наложение формы, возможно, метод Control.BringToFront()
может сделать это до или после вашего вызова метода Control.Show()
, в зависимости от того, что лучше всего подходит для вы.