Я рассмотрел бы использование свойства Control.Dock
наряду с одним из значений перечисления DockStyle
.
Возможно, вам также потребуется сыграть с Layout
, чтобы вы могли разметить элементы управления своей формы по-разному в зависимости от выбранного DockStyle
.
Вам необходимо, с моей точки зрения, рассмотреть объект Control.Location
, чтобы вы узнали, какое значение DockStyle
для прикрепления вашей формы.
EDIT # 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. Что касается других окон, я бы согласился с чем-то, что похоже на предоставленный образец кода.
Помогает ли это?
EDIT # 2
Если вы хотите, чтобы предотвратить перекрытие форме, а может быть метод Control.BringToFront()
мог сделать это до или после вызова метода Control.Show()
, в зависимости от того, что лучше работает для вас.
привет, спасибо за ответ. Я немного новичок в использовании обширных функций Visual Studio 2008, и я совершенно не знаю, как я могу использовать свойство Control.Dock. Не могли бы вы привести несколько примеров того, как я могу использовать эти свойства? спасибо :) – Smiley
Это для контроля док-станции в форме, а не для стыковки всей формы. –
@Jouke Van Der Maas: Думаю, вы не прочитали мой ответ. Я упоминаю свойство «DesktopLocation», то есть для стыковки всего окна на рабочем столе. Кроме того, я полагаю, что это может быть лучшим инструментом для работы после того, как ОП поставил перед собой задачу. Пожалуйста, внесите изменения в свой комментарий. –