2016-10-31 6 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 (내 Panel의 이름)을 이동하려면 Panel 내부의 모든 컨트롤에 해당 패널과 함께 이동해야한다고 구체적으로 말해야합니까? 나중에 편집 : 신경 쓰지 마세요. 대답은 '아니오'입니다. 당신 말이 맞았습니다. 나는 단지 보내야 만했습니다 : Drag_Form (pnlSettings.Handle, e); – Filip