PDA

View Full Version : حرکت فرم با دراگ کردن ماوس بر روی آن



s4lish
چهارشنبه 20 دی 1391, 11:55 صبح
سلام.
میخواستم بدونم چطور با دراگ کردن ماوس بر روی فرم آن را جابه جا کنم.
با تشکر

mousa1992
چهارشنبه 20 دی 1391, 12:25 عصر
سلام
این کدها رو داخل کلاس فرم اضافه کن
[DllImport("user32.dll")]
static extern int ReleaseCapture();
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
static extern int SendMessage(int hwnd, int wMsg, int wParam, object lParam);
private const int WM_NCLBUTTONDOWN = 161;

این کد رو توی رویداد MouseDown قرار بده
ReleaseCapture();
SendMessage(this.Handle.ToInt32(), WM_NCLBUTTONDOWN, 2, 0);

این فضای نام رو هم اضافه کن System.Runtime.InteropServices;

امیدوارم همون چیزی باشه که میخواین چون منظورتونو دقیق متوجه نشدم
کدهای بالا با استفاده از توابع API عمل میکنه و با فشردن کلیک موس و حرکت اون فرمتون جابجا میشه

موفق باشی

yashar666
چهارشنبه 20 دی 1391, 12:52 عصر
با .net هم میشه



private bool dragging;
private Point pointClicked;
private void Form1_MouseMove(object sender, MouseEventArgs e)
{

if (dragging)
{
Point pointMoveTo;

pointMoveTo = this.PointToScreen(new Point(e.X, e.Y));

pointMoveTo.Offset(-pointClicked.X, -pointClicked.Y);

this.Location = pointMoveTo;

}
}

private void Form1_MouseUp(object sender, MouseEventArgs e)
{
dragging = false;
}

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
// Turn drag mode on and store the point clicked.
dragging = true;
pointClicked = new Point(e.X, e.Y);
}
else
{
dragging = false;
}
}

s4lish
جمعه 22 دی 1391, 12:04 عصر
آقایان mousa1992 (http://barnamenevis.org/member.php?252440-mousa1992) و yashar666 (http://barnamenevis.org/member.php?25403-yashar666) از جواب هر دوتون بسیار سپاس گذارم... خیلی راهنمایی خوبی بود. دو روش به دو شکل مختلف یاد گرفتم
مرسی