PDA

View Full Version : مشکل با حرکت کنترل های که در حین برنامه اضافه کردم



mylove_iman
پنج شنبه 29 خرداد 1393, 20:03 عصر
سلام دوستان من در لود فرمم 9 تا PictureBox به فرمم اضافه کردم .میخوام بتونم این PictureBox را با ماوس هر جای که دوس دارم حرکت بدم .من دو تا رویداد را برای این کنترل ها به صورت زیر صدا کردم
lbl.MouseDown += new MouseEventHandler(MouseClickFunc);
lbl.MouseMove += new MouseEventHandler(MouseMoveFunc);

تا اینجا مشکلی ندارم. تابعی که صدا میکنم هم به این صورته

private void MouseClickFunc(object sender, EventArgs e)
{
X1 = Controls[(sender as PictureBox).Name].Location.X;
Y1 = Controls[(sender as PictureBox).Name].Location.Y;
X2 = MousePosition.X;
Y2 = MousePosition.Y;
}


به نظر که این تابع ایرادی نداره ولی تابع زیر را نگاه کنید
private void MouseMoveFunc(object sender, EventArgs e)
{


if (e.Button == MouseButtons.Left)
{
Controls[(sender as PictureBox).Name].Location = new Point(X1 + (MousePosition.X - X2), Y1 + (MousePosition.Y - Y2));
}
Rectangle rc1 = Controls[(sender as PictureBox).Name].RectangleToScreen(Controls[(sender as PictureBox).Name].ClientRectangle);
Rectangle rc2 = button1.RectangleToScreen(button1.ClientRectangle) ;
if (rc1.IntersectsWith(rc2))
{
MessageBox.Show("OK");
}
}





موقع اجرا به خط زیر ایراد می گیره
if (e.Button == MouseButtons.Left)

منکه نمی فهمم چشه؟

mylove_iman
پنج شنبه 29 خرداد 1393, 20:05 عصر
مگه این خط نمیگه اگه دکمه سمت چپ را فشار داده این کار را بکن
if (e.Button == MouseButtons.Left)

راستی اصلا میفهمه e ‌منظورش دکمه ماوس هست ؟؟؟؟

mylove_iman
جمعه 30 خرداد 1393, 08:31 صبح
سلام دستان درست شد.ایراد از خودم بود باید تواب را درست صدا می کردم یعنی به این صورت
private void MouseMoveFunc(object sender, MouseEventArgs e)
ممنون از توجهتون