mylove_iman
پنج شنبه 29 خرداد 1393, 21: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)
منکه نمی فهمم چشه؟
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)
منکه نمی فهمم چشه؟