Как заставить сенсорную панель Winform вести себя разумно на сенсорном мониторе?
Какой самый простой способ изменить трекбар Winforms так, чтобы, когда пользователь щелкает по нему, трекбар переходит к расположению мыши?
По умолчанию трек-бар перемещается на полпути между его текущим местоположением и местом щелчка мыши.
Обновление: я пытаюсь сделать это, чтобы я мог использовать трек-бар на сенсорном экране. С сенсорным экраном перетаскивание действительно сложно, поэтому требуется, чтобы трекбар прыгал прямо туда, куда пользователь нажимает.
1 ответ
Я никогда не делал этого, но я бы начал с просмотра местоположения щелчка мышью. Затем я мог выяснить, насколько далеко на текущем экстенте трекбара находился щелчок, и установить местоположение трекера в этом месте.
Я бы начал с изучения переопределения управления и манипулирования функциями событий, связанными с мышью (OnMouseDown()
например). Обратите внимание, что в некоторых случаях может быть важно вызвать реализацию переопределенной функции базового класса, не забывайте рассматривать ее в каждом конкретном случае. (Я просто столкнулся с этим, так что это свежо в моей памяти.)
Обратите внимание, что таким образом вы должны изменять поведение стандартных элементов управления только в том случае, если у вас есть веская причина. Они стандартные, потому что ведут себя предсказуемым образом во многих сотнях и тысячах программ. Заставить что-то вести себя по-другому, потому что ваша программа может нарушить принцип удивления аренды. Единственный трекбар, о котором я могу думать, который я ожидаю, будет вести себя так, как вы описали, для какого-то медиаплеера.
Изменить: На основании вашего комментария, да, я думаю, у вас есть веская причина.:)