Этот вопрос связан с другим моим вопросом, который можно найти здесь найдено здесь. Я хотел переместить PictureBox
в его родительский контейнер, который является TabPage
(если это имеет значение!) Используя приведенный ниже код, можно выполнить перемещение:
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;
}
Теперь моя проблема в том, что нет предела этому перемещению контроля. Пользователь может перетаскивать элементы управления на километры от видимой области TabPage
, внутри которой находится моя картинка. Я попытался добавить некоторые ограничения для движения, изменив событие MouseMove
таким образом, чтобы, по крайней мере, предотвратить его выход за пределы видимой области Left
и Right
вкладки:
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));
}
}
Но проблема с приведенным выше кодом заключается в том, что всякий раз, когда изображение попадает в правую или левую сторону контейнера, а Left
или Right
становятся равными 0, я больше не могу перемещать элемент управления.
Любая помощь/советы по ограничению этого движения внутри контейнера для Left, Right, Top and Bottom
окна изображения будут оценены!