Как заставить сенсорную панель Winform вести себя разумно на сенсорном мониторе?

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

По умолчанию трек-бар перемещается на полпути между его текущим местоположением и местом щелчка мыши.

Обновление: я пытаюсь сделать это, чтобы я мог использовать трек-бар на сенсорном экране. С сенсорным экраном перетаскивание действительно сложно, поэтому требуется, чтобы трекбар прыгал прямо туда, куда пользователь нажимает.

1 ответ

Решение

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

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

Обратите внимание, что таким образом вы должны изменять поведение стандартных элементов управления только в том случае, если у вас есть веская причина. Они стандартные, потому что ведут себя предсказуемым образом во многих сотнях и тысячах программ. Заставить что-то вести себя по-другому, потому что ваша программа может нарушить принцип удивления аренды. Единственный трекбар, о котором я могу думать, который я ожидаю, будет вести себя так, как вы описали, для какого-то медиаплеера.

Изменить: На основании вашего комментария, да, я думаю, у вас есть веская причина.:)

Другие вопросы по тегам