Как закрепить форму windows в C#?
Я просто хотел бы знать, можно ли закрепить форму windows в верхней части экрана пользователя? Я пытался сделать это, вручную установив положение моей формы в нужные мне координаты. Однако использование этого метода позволяет пользователю изменять положение формы, просто перетаскивая ее. Я хочу сделать форму, прикрепленную к верхней части экрана, так как эта форма окна будет сервером в качестве меню для проекта, который я делаю.
Спасибо большое. :)
3 ответов
Я бы рассмотрел возможность использования 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()
метод, в зависимости от того, что так будет лучше для тебя.
Итак, после некоторых настроек я, наконец, смог заставить этот код работать.
this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width / 2 - 420), 0);
Я поместил эту строку ниже InitializeComponent (), и она закрепляет мою форму в центре экрана с любыми значениями разрешения.
установка FormBorderStyle
в форме None
, вы берете дескриптор перетаскивания от пользователя, чтобы они не могли перемещать его с помощью мыши.
тогда вам просто необходимо разместить его там, где вы хотите.
Если вы действительно хотите забрать параметры пользователей, вы также можете установить ShowInTaskbar
свойство false