Я просто хотел бы знать, возможно ли прикрепить форму окон сверху пользовательского экрана? Я пытался сделать это путем ручной установки положения моей формы к координатам, которые я хочу. Но использование этого метода, однако, позволяет пользователю менять положение формы только путем перетаскивания его. Я хочу сделать форму прикрепленной с верхней частью экрана, так как эта форма окна будет сервер как меню для проекта, который я делаю.
Большое спасибо. :)
Итак, после некоторых настроек я наконец смог заставить этот код работать.
this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width / 2 - 420), 0);
Я поместил эту строку под InitializeComponent (), и она закрепит мою форму в центре экрана с любыми значениями разрешения.
Я бы подумал об использовании свойства Control.Dock
вместе с одним из Значения перечисления DockStyle
.
Возможно, вам также придется поиграть с Layout
, чтобы вы могли по-разному размещать элементы управления вашей формы в зависимости от выбранного DockStyle
.
С моей точки зрения, вам нужно будет рассмотреть свойство Control.Location
, чтобы узнать, с каким значением DockStyle
стыковать форму.
РЕДАКТИРОВАТЬ №1
Ваша форма Windows имеет свойство Dock
, поскольку оно наследуется от Control
.
Давайте рассмотрим следующее:
Каждый раз, когда ваша форма приближается к правой стороне экрана, например, или к контейнеру MDI, вы хотите закрепить, верно? (Небольшая игра слов ... = P) Итак, вы должны подписаться на событие Control.LocationChanged
.
private void myForm_LocationChanged (объект-отправитель, EventArgs e) {
если (this.Location.X> 900), то
this.Dock = DockStyle.Right;
иначе, если (this.Location.X <150), то
this.Dock = DockStyle.Left;
иначе, если (this.Location.Y> 600), то
this.Dock = DockStyle.Bottom;
иначе, если (this.Location.Y <150), то
this.Dock = DockStyle.Top;
еще
this.Dock = DockStyle.None;
}
Действительно, вместо постоянных значений вы должны использовать текущее разрешение рабочего стола и вычислять на его основе коэффициент, в котором вы хотите, чтобы стыковка происходила.
*** Заявление об ограничении ответственности: **** Этот код предоставляется «как есть» и не тестировался. Надеюсь, этого алгоритма достаточно, чтобы провести вас через процесс стыковки по мере необходимости. Дополнительная помощь может быть предоставлена по запросу. * =)
Кажется, Форма.Свойство DesktopLocation
является более правильным инструментом для работы, чем для вашего главного окна, то есть, например, для вашего контейнера MDI. Что касается других окон, я бы согласился с чем-то похожим на предоставленный образец кода.
Это поможет?
РЕДАКТИРОВАТЬ №2
Если вы хотите предотвратить перекрытие форм, возможно, метод Control.BringToFront ()
сможет сделать это до или после вашего вызова ] Control.Show ()
, в зависимости от того, что вам больше подходит.
Установив FormBorderStyle
вашей формы на None
, вы забираете ручку перетаскивания у пользователя, чтобы он не мог перемещать ее с помощью мыши.
Затем вам просто нужно поместить ее туда, куда вы хотите.
Если вы действительно хотите лишить пользователя возможности выбора, вы также можете установить свойство ShowInTaskbar
в false