Как заставить сенсорную панель Winform вести себя разумно на сенсорном мониторе? - PullRequest
1 голос
/ 16 апреля 2009

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

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

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

1 Ответ

2 голосов
/ 16 апреля 2009

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

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

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

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

...