PDA

View Full Version : سوال: جا به جا کردن فرم



hamedre81
پنج شنبه 23 شهریور 1391, 10:50 صبح
با سلام
چطوری می تونم با کلیک رو یک شی در فرم کل فرم رو حرکت بدم؟
یعنی کاری مثل Titlebar با برنامه های ویندوزی می کنه.
می خوام این Titlebar رو یه عکس دیگه عوض کنم اما همون کار رو بکنه؟

مسعود اقدسی فام
پنج شنبه 23 شهریور 1391, 11:58 صبح
وقتی کاربر ماوس رو فشار می ده بررسی کنید که آیا داخل عکس هست یا نه؟ اگه بود یه متغیر عمومی رو که برای این کار تعریف کردید true کنید. بعد هر وقت ماوس حرکت می کنه بررسی کنید، اگه مفدار متغیر true بود جای فرم رو اندازه حرکت ماوس عوض کنید. وقتی ماوس رو رها کرد متغیر رو false کنید.

البته خود رویداد MouseMove آرگومانی داره که مشخص می‌کنه آیا کلیدی فشار داده شده یا نه. روشی که بالا گفتم یه روش کلی برای هر زبانی با هر امکاناتیه.

BEHZADnr
پنج شنبه 23 شهریور 1391, 13:17 عصر
سلام دوست عزیز
برای اینکار میتونید از API استفاده کنید
ابتدا Namespace زیر رو به برنامه اضافه کنید
using System.Runtime.InteropServices;
سپس کد زیر رو به ابتدای برنامه اضافه کنید

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();
حالا کد زیر را در رویداد MouseDown هر شی که خواستید اضافه کنید
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(this.Handle, 0xa1, 0x2, 0);
}
موفق باشی