Zapobieganie przeniesieniu kontroli z pojemnika
To pytanie dotyczy mojej innej kwestii, którą można znaleźć tutajmożna znaleźć tutaj. Chciałem się przenieśćPictureBox
w kontenerze nadrzędnym, który jestTabPage
(Jeśli to robi jakąś różnicę!) Używając poniższego kodu, można wykonać ruch:
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;
}
Teraz mój problem polega na tym, że nie ma ograniczeń w tym przenoszeniu kontroli. Użytkownik może przeciągnąć kontrolne kilometry z widocznego obszaruTabPage
które moje zdjęcie jest w środku. Próbowałem dodać pewne ograniczenia ruchu, zmieniającMouseMove
wydarzenie takie jak to, aby przynajmniej zapobiec wydostaniu się zLeft
iRight
widoczny obszar zakładki:
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));
}
}
Ale problem z powyższym kodem pojawia się zawsze, gdy Picturebox uderza w prawą lub lewą stronę kontenera iLeft
lubRight
uzyskać wartość równą 0, nie mogę już przenieść kontroli.
Wszelkie pomoce / wskazówki do ograniczenia tego ruchu wewnątrz konteneraLeft, Right, Top and Bottom
pudełka z obrazkami zostanie zatwierdzone!