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