Привязка окна приложения к краям экрана и блокировка его перемещения

      Функция реализует закрепление окна(формы) вашего приложения на краю экрана и запрещает его перемещение!
Ниже приведен код реализации данной задачи:
private int width = Screen.PrimaryScreen.Bounds.Width;
const int WM_NCLBUTTONDOWN = 0x00A1;
const int WM_NCHITTEST = 0x0084;
const int HTCAPTION = 2;
[DllImport("User32.dll")]
static extern int SendMessage(IntPtr hWnd,
int Msg, IntPtr wParam, IntPtr lParam);

protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_NCLBUTTONDOWN)
    {
        int result = SendMessage(m.HWnd, WM_NCHITTEST, IntPtr.Zero, m.LParam);
        if (result == HTCAPTION)
            return;
    }
    base.WndProc(ref m);
}
Для закрепления формы на краю экрана, необходимо указать при запуске формы, расположение вашего приложения:
private void Form1_Load(object sender, EventArgs e)
{
    //привязка формы к определенному месту экрана

    //верх правого угла экрана
    this.Location = new System.Drawing.Point(width - this.Size.Width, 0);
}

Ссылка для скачивания примера: Rusfolder.net


4 комментария:

  1. Интересно, а можно такое-же реализовать в MDI приложении? Чтобы дочерние окна привязывались к границам родительской формы. 

    ОтветитьУдалить
  2. Да это реализовать можно, в точности как привязка окон в Microsoft Visual Studio 2010. Вот вам ссылка на компонент http://sourceforge.net/projects/dockpanelsuite/

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

    ОтветитьУдалить
  4. Здравствуйте, да можно:

    this.WindowState = FormWindowState.Maximized;

    ОтветитьУдалить

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