2016-10-31 9 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の名前)を移動したいのであれば、パネル内のすべてのコントロールに移動するように具体的に指示する必要がありますか? 後で編集:気にしないでください。答えは「いいえ」です。あなたは正しいです、私はちょうど送る必要がありました:Drag_Form(pnlSettings.Handle、e); – Filip

関連する問題