Как переместить окно WinForm без рамки, но с панелью, покрывающей всю область - PullRequest
0 голосов
/ 05 января 2011

Я видел код, размещенный на этом форуме для перемещения WinForm без границ, но мой диалог (C #) имеет панель, охватывающую всю область. Я знаю, что для этого нужно использовать WndProc. Я не знаю, что делать на этом этапе. Мое окно не перемещается, пока я не выставлю некоторые из них, уменьшив размер панели. Спасибо.

Код, который у меня есть:

protected override void WndPro(ref Message m)
{
  switch(m.Msg)
  {
   case 0x84:m.Result = new intPtr(0x2);
   return 
   }
base.wndProc(ref m);
}

1 Ответ

2 голосов
/ 05 января 2011

Вам нужно будет дать панели такой же вид лечения, за исключением того, что вы вернете HTTRANSPARENT.Это делает прозрачным попадание в тесты, и форма получит сообщение.Теперь это работает.Добавьте класс в ваш проект и вставьте код, показанный ниже.Компиляция.Замените существующую панель этой.

using System;
using System.Windows.Forms;

class BackPanel : Panel {
    protected override void WndProc(ref Message m) {
        if (m.Msg == 0x84) m.Result = (IntPtr)(-1);
        else base.WndProc(ref m);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...