Evitando que se mueva un control fuera de su contenedor.
Esta pregunta está relacionada con otra pregunta mía que se puede encontrar aquí.se puede encontrar aquí. Queria mover unPictureBox
dentro de su contenedor padre que es unaTabPage
(¡Si hace alguna diferencia!) El uso del código debajo del movimiento se puede hacer:
private Point start = Point.Empty;
private bool _mapPackageIsMoving;
void pictureBoxPackageView_MouseUp(object sender, MouseEventArgs e) {
_mapPackageIsMoving = false;
}
void pictureBoxPackageView_MouseMove(object sender, MouseEventArgs e) {
if (_mapPackageIsMoving) {
pictureBoxPackageView.Location = new Point(
pictureBoxPackageView.Left + (e.X - start.X),
pictureBoxPackageView.Top + (e.Y - start.Y));
}
}
void pictureBoxPackageView_MouseDown(object sender, MouseEventArgs e) {
start = e.Location;
_mapPackageIsMoving = true;
}
Ahora mi problema es que no hay límite para este movimiento de control. El usuario puede arrastrar los controles a kilómetros del área visible de laTabPage
que mi picturebox está dentro de ella. Intenté agregar algunos límites para el movimiento cambiando laMouseMove
evento como este, al menos para evitar que salga de laLeft
yRight
área visible de la pestaña:
void pictureBoxPackageView_MouseMove(object sender, MouseEventArgs e) {
if (_mapPackageIsMoving) {
//Added condition
if (pictureBoxPackageView.Left >= 0 && pictureBoxPackageView.Right >= 0)
pictureBoxPackageView.Location = new Point(
pictureBoxPackageView.Left + (e.X - start.X),
pictureBoxPackageView.Top + (e.Y - start.Y));
}
}
Pero el problema con el código de arriba es cuando la caja de imágenes toca el lado derecho o izquierdo del contenedor y laLeft
oRight
igual a 0, ya no puedo mover el control.
Cualquier ayuda / consejos para lograr limitar este movimiento dentro del contenedor paraLeft, Right, Top and Bottom
de la caja de la imagen será appriciated!