Как закрепить форму окна в C #? - PullRequest
6 голосов
/ 09 июля 2010

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

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

Ответы [ 3 ]

3 голосов
/ 09 июля 2010

Я бы рассмотрел использование свойства 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(), в зависимости от того, что лучше всего подходит для вы.

1 голос
/ 09 июля 2010

Так что после некоторых настроек я наконец смог заставить этот код работать.

this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width / 2 - 420), 0);

Я поместил эту строку ниже InitializeComponent (), и она прикрепляет мою форму к центру экрана с любыми значениями разрешения.,

0 голосов
/ 09 июля 2010

Установив FormBorderStyle вашей формы на None, вы убираете ручку перетаскивания от пользователя, чтобы он не мог перемещать ее с помощью мыши.

Тогда вам просто нужно разместить его там, где вы хотите.

Если вы действительно хотите убрать опции пользователя, вы также можете установить для свойства ShowInTaskbar значение false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...