Блокировка перетаскивания формы за границы рабочего пространства


      В данной статье приведен пример реализации блокировки перетаскивания формы вашего проекта за границы рабочего пространства.
      Создайте проект «Windows Form» в «Microsoft Visual Studio». Сделайте клик правой клавишей мыши по любому свободному месту главной формы и выберете пункт «Свойства» в открывшемся контекстном меню. В окне свойств главной формы вашего проекта перейдите в раздел «События» и найдите событие «LocationChanged».
      Выполните по нему дойной клик левой клавишей мыши. Вы перейдете в редактор кода с установкой курсора в автоматически созданном методе «Form1_LocationChanged», события «LocationChanged», выполняющегося при изменении значения свойства «Location». Вставьте в тело данного метода приведенный ниже листинг, запрета выхода границ формы за пределы экрана.
//Получаем размеры рабочего пространства (в точках) для текущего видеорежима основного монитора.
Size size = new Size();

//Получаем размеры (в точках) для текущего видео 
//режима основного монитора.
size.Height = SystemInformation.PrimaryMonitorSize.Height;
size.Width = SystemInformation.PrimaryMonitorSize.Width;

if (this.Location.X < 0)
{
    this.Location = new Point(0, this.Location.Y);
}
if (this.Location.Y < 0)
{
    this.Location = new Point(this.Location.X, 0);
}
if (this.Location.X + this.Size.Width > size.Width)
{
    this.Location = new Point(size.Width - this.Size.Width, this.Location.Y);
}
if (this.Location.Y + this.Size.Height > size.Height)
{
    this.Location = 
       new Point(this.Location.X, size.Height - this.Size.Height);
}
      Запустите проект, нажав на клавишу «F5», после компиляции проекта попробуйте выполнить перемещение формы за пределы границ монитора. При каждой попытке переместить форму за пределы будет выполняться данный код. В данном приеме есть одна особенность, форма не может выходить за пределы только основного монитора (монитора установленного по умолчанию). Для расширения области перетаскивания формы при работе с двумя мониторами воспользуйтесь приведенным ниже кодом получения рабочего пространства.
//Получаем высоту главного экрана и сумму ширины двух мониторов.
size.Height =
    SystemInformation.PrimaryMonitorSize.Height;
size.Width = 
    Screen.AllScreens[0].WorkingArea.Width + 
    Screen.AllScreens[1].WorkingArea.Width;
      Если вы хотите чтобы форма не могла заходить за панель задач, воспользуйтесь приведенным ниже кодом.
//Получаем границы области рабочего стола, за исключением панели задач,
//закреплённых окон и закреплённых панелей инструментов.
size.Height = Screen.PrimaryScreen.WorkingArea.Height;
size.Width = Screen.PrimaryScreen.WorkingArea.Width;

Комментариев нет:

Отправить комментарий

Большая просьба, не писать в комментариях всякую ерунду не по теме!