2016-10-31 17 views
1

Я хотел бы сделать определенные панели в моей Форме перетаскиваемой/подвижной. Я включил:C# Перемещение панели внутри формы

public const int WM_NCLBUTTONDOWN = 0xA1; 
    public const int HT_CAPTION = 0x2; 
    [DllImportAttribute("user32.dll")] 
    public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); 
    [DllImportAttribute("user32.dll")] 
    public static extern bool ReleaseCapture(); 

в соответствии с другими ответами, которые я нашел здесь. Вместе с:

void pnlSettings_MouseMove(object sender, MouseEventArgs e) 
    { 
     Drag_Form(Handle, e); 
    } 
    public static void Drag_Form(IntPtr Handle, MouseEventArgs e){ 
     if (e.Button == MouseButtons.Left) 
     { 
      ReleaseCapture(); 
      SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); 
     } 
    } 

А что, кажется, происходит целая форма движется, а не только на панели управления (pnlSettings). Я не могу понять, как заставить панель двигаться.

ответ

0

Handle является ручкой формы.

Вам необходимо передать .Handle элемента управления, который хотите переместить.

+0

Так что, если я хочу переместить pnlSettings (имя моей панели), значит ли это, что я должен указать всем элементам управления внутри панели, чтобы переместить их? Позже отредактируйте: Nevermind. Ответ: Нет. Вы были правы, мне просто нужно было отправить: Drag_Form (pnlSettings.Handle, e); – Filip