aliblue
پنج شنبه 25 فروردین 1390, 19:31 عصر
اگر بخواهیم هنگام اجرا با کلیک کردن روی کنترل و کشیدن آن را حرکت دهیم آیا دستور خاصی وجود دارد؟کد زیر را نوشتم و به خوبی عمل می کند اما دو اشکال ممکن است پیش بیاید که در ادامه به آن می پردازم.
private void button1_MouseDown(object sender, MouseEventArgs e)
{
f = true;
btnx1 = button1.Left;
btny1 = button1.Top;
mx1 = MousePosition.X;
my1 = MousePosition.Y;
}
private void button1_MouseUp(object sender, MouseEventArgs e)
{
f = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (f)
{
button1.Left = btnx1 + MousePosition.X - mx1;
button1.Top = btny1 + MousePosition.Y - my1;
}
}
1-اگر بخواهیم برای کنترل های دیگر هم این کار را انجام دهیم خیلی طولانی می شود.
2-حرکت در واحد زمانی که در Interval تعیین کرده ایم انجام می شود و حتی اگر آن را روی 1 بگذاریم
باز هم کمی کند حرکت می کند و از نشانگر ماوس جا می ماند.
کسی می داند که چه کار باید کرد؟
private void button1_MouseDown(object sender, MouseEventArgs e)
{
f = true;
btnx1 = button1.Left;
btny1 = button1.Top;
mx1 = MousePosition.X;
my1 = MousePosition.Y;
}
private void button1_MouseUp(object sender, MouseEventArgs e)
{
f = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (f)
{
button1.Left = btnx1 + MousePosition.X - mx1;
button1.Top = btny1 + MousePosition.Y - my1;
}
}
1-اگر بخواهیم برای کنترل های دیگر هم این کار را انجام دهیم خیلی طولانی می شود.
2-حرکت در واحد زمانی که در Interval تعیین کرده ایم انجام می شود و حتی اگر آن را روی 1 بگذاریم
باز هم کمی کند حرکت می کند و از نشانگر ماوس جا می ماند.
کسی می داند که چه کار باید کرد؟