2010-07-09 6 views
6

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

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

ответ

1

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

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

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

3

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

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

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

EDIT # 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. Что касается других окон, я бы согласился с чем-то, что похоже на предоставленный образец кода.

Помогает ли это?

EDIT # 2

Если вы хотите, чтобы предотвратить перекрытие форме, а может быть метод Control.BringToFront() мог сделать это до или после вызова метода Control.Show(), в зависимости от того, что лучше работает для вас.

+0

привет, спасибо за ответ. Я немного новичок в использовании обширных функций Visual Studio 2008, и я совершенно не знаю, как я могу использовать свойство Control.Dock. Не могли бы вы привести несколько примеров того, как я могу использовать эти свойства? спасибо :) – Smiley

+0

Это для контроля док-станции в форме, а не для стыковки всей формы. –

+0

@Jouke Van Der Maas: Думаю, вы не прочитали мой ответ. Я упоминаю свойство «DesktopLocation», то есть для стыковки всего окна на рабочем столе. Кроме того, я полагаю, что это может быть лучшим инструментом для работы после того, как ОП поставил перед собой задачу. Пожалуйста, внесите изменения в свой комментарий. –

0

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

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

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