Как заставить полосу трека (слайдер) Winform вести себя разумно на мониторе с сенсорным экраном?

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

Вопрос

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

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

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

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

Решение

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

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

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

Редактировать:Судя по вашему комментарию, да, я думаю, у вас есть веская причина.:)

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