私はWinFormsプロジェクトを持っています。私は窓の上にパネルを持っています。私はそのパネルがウィンドウを動かすことができるようにしたい、ユーザーがそれをクリックしてからドラッグすると、コントロールをクリックしてドラッグしてウィンドウを移動する
どうすればいいですか?
私はWinFormsプロジェクトを持っています。私は窓の上にパネルを持っています。私はそのパネルがウィンドウを動かすことができるようにしたい、ユーザーがそれをクリックしてからドラッグすると、コントロールをクリックしてドラッグしてウィンドウを移動する
どうすればいいですか?
あなたのクラスに次のdeclerationsを追加します。
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HTCAPTION = 0x2;
[DllImport("User32.dll")]
public static extern bool ReleaseCapture();
[DllImport("User32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
があなたのパネルのMouseDown
イベントでこれを入れて:http://stackoverflow.com/questions:
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
}
}
Googleはこれが重複であるかもしれないと言います/ 30184/winforms-click-drag-anywhere-in-the-form-to-the-click-in-the-form – rie819
いいえ!そうではない。私はユーザーがフォーム内の任意の場所にウィンドウを移動できるようにしたくありません。私は、ユーザーが 'panel1'コントロールからウィンドウを移動できるようにしたい。 – Victor
googleで" Daniel Moth、Vista Glass "を検索する。彼のチュートリアルでは、これを行う方法(Win32呼び出し)を示しています。また、これはいくつかの興味があるかもしれませんhttp://www.codeproject.com/Articles/55180/Extending-the-Non-Client-Area-in-Aero – series0ne