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!

questionAnswers(2)

yourAnswerToTheQuestion