Как реализовать перетаскивание мышью в Visual Basic?

StackOverflow https://stackoverflow.com/questions/38081

Вопрос

Мне нужно создать в Visual Basic 2005 Express элемент управления «быстрые и грязные», значение которого увеличивается / уменьшается с помощью «захвата». это с помощью мыши и перемещения курсора вверх / вниз. Поскольку сама ручка не двигается, мне нужно отслеживать движение мыши за пределами прямоугольника элемента управления.

Я использую Label с ImageList для реализации этого (у меня есть список из 127 растровых изображений, представляющих ручку в различных положениях).

На какие события я должен реагировать?

Это было полезно?

Решение

Вам нужен элемент управления для обработки трех событий: Mouse Down, Mouse Move и Mouse Up. На событии Mouse Down вам нужно будет захватить мышь. Это означает, что сообщения мыши отправляются в элемент управления, который имеет перехват. В случае перемещения мыши, если ввод фиксируется, обновите отображаемое изображение в зависимости от величины перемещения мыши. В событии мыши вверх отпустите захват, если ввод захвачен.

Логическое значение, предложенное jjnguy, не нужно, поскольку свойство Capture элемента управления доступно для чтения, поэтому можно определить, был ли установлен захват.

Другие советы

Ваша проблема будет заключаться в том, чтобы определить, какое растровое изображение вы хотите отобразить, основываясь на координатах, которые сообщает мышь в событии mouse_move. Вам нужно будет выполнить магию для преобразования координат и найти значение, которое вы можете использовать, чтобы выбрать правильное изображение.

Это не кажется слишком сложным, просто немного проб и ошибок в математике. Skizz уже показал вам, как захватить события.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top