2016-10-31 59 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(我的小组的名称),这意味着我要明确告诉面板内的所有控件与它移动? 后来编辑:没关系。答案是否定的。你说得对,我只需要发送:Drag_Form(pnlSettings.Handle,e); – Filip