1. Гость - предлагаем Вам : Мощные Выделенные Серверы 16-24 ядра / Lan 1Gbps - для XRumer, ZennoPoster, GSA, и другого сео-софта от 80 usd/месяц, для уточнения деталей воспользуйтесь формой обратной связи, или напишите Администратору форума в ЛС. ICQ:698-329-725

C-Sharp (C#) Перетаскивание формы за любой элемент winforms

Тема в разделе "Разработка приложений C# .Net Скрипты библиотеки .", создана пользователем Prime Scripts Labs, 5 окт 2017.

  1. Prime Scripts Labs

    Prime Scripts Labs Разработчик

    Регистрация:
    10 июн 2017
    Сообщения:
    232
    Симпатии:
    114
    Получил несколько сообщений в ЛС с просьбой подсказать, как перетаскивать форму за любой элемент .
    Представляю способ реализации перемещения формы "FormBorderStyle: None" за любую область , с возможностью указать событие в любом контроле WinForms.

    Оригинальный способ реализации:

    using System.Runtime.InteropServices

    Код (C#):
    1. [DllImport("user32", CharSet = CharSet.Auto)]
    2. internal extern static bool PostMessage(IntPtr hWnd, uint Msg, uint WParam, uint LParam);
    3.  
    4. [DllImport("user32", CharSet = CharSet.Auto)]
    5. internal extern static bool ReleaseCapture();
    6.  
    7. const uint WM_SYSCOMMAND = 0x0112;
    8. const uint DOMOVE = 0xF012;
    9. const uint DOSIZE = 0xF008;
    10.  
    В событие "MouseDown" формы, и любого элемента форм виндовс вставляем сл.
    Код (C#):
    1. ReleaseCapture();
    2. PostMessage(this.Handle, WM_SYSCOMMAND, DOMOVE, 0);
    Для 64 битных OS желательно изменить константы , пример приведён 32 бит, 4 байта.

    DEMO
     

Поделиться этой страницей