Как перетащить элемент управления Picturebox - PullRequest
2 голосов
/ 19 декабря 2011

У меня есть класс под названием «MusicNote», который наследуется от «PictureBox». Я пытаюсь заставить его перетаскивать вертикально, когда пользователь нажимает на него и перемещает мышь вверх / вниз. Я вставил код ниже, который работает. Проблема в том, что он работает только в первый раз - то есть пользователь перетаскивает его, и он помещается в новую позицию, как и должно быть. Однако, когда я нажимаю на нее снова и перетаскиваю - она ​​исчезает. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

Проблема с обработчиком событий MouseUp.В этом случае вам придется отписаться от обработчика события MouseMove.

    public void MusicNote_MouseUp(object sender, MouseEventArgs e)
    {
        isDragging = false;
        this.MouseMove -= new MouseEventHandler(OnDrag);
    }

Множественная подписка на одно и то же событие приводит к тому, что верхнее значение элемента управления становится отрицательным.

0 голосов
/ 19 декабря 2011

Кажется, переменные currentX и currentY не обновляются в OnDrag

 public void MusicNote_MouseUp(object sender, MouseEventArgs e)
        {
            isDragging = false;

            currentX  = e.X;
            currentY  = e.Y;
        }
...