Как прикрепиться, окна формируются в C#?

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

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

6
задан default locale 29 July 2014 в 12:44
поделиться

3 ответа

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

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

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

1
ответ дан 17 December 2019 в 06:59
поделиться

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

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

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

РЕДАКТИРОВАТЬ №1

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

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

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

3
ответ дан 17 December 2019 в 06:59
поделиться

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

Затем вам просто нужно поместить ее туда, куда вы хотите.

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

.
0
ответ дан 17 December 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: