Как закрепить форму windows в C#?

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

Спасибо большое. :)

3 ответов


Я бы рассмотрел возможность использования Control.Dock свойство вместе с одним из DockStyle значения перечисления.

возможно, Вам придется играть с Layout тоже, так что вы можете макет вашей формы контроля в зависимости от DockStyle выбранные.

вам нужно будет, с моей точки зрения, рассмотреть Control.Location свойство, чтобы вы узнали, какой DockStyle значение для закрепления формы с.

правка #1

ваша форма Windows имеет Dock свойство, как оно наследуется от Control.

рассмотрим следующее :

  1. каждый раз, когда ваша форма приближается к вашей правой стороне экрана, например, или контейнера 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