2009-04-16 8 views
1

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

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

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

+0

Поведение по умолчанию заключается в том, что поле трека перемещает расстояние, заданное «LargeChange», а не половину расстояния между полем и щелчком. –

+0

Спасибо за информацию, я никогда не понимал, что она делает, я всегда думал, что это немного случайно. –

ответ

2

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

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

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

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

+1

Да, я понимаю это, единственная проблема заключается в том, что мое программное обеспечение работает на сенсорном экране, а поведение трекбара по умолчанию действительно не работает на сенсорном экране. В основном все, что связано с перетаскиванием, почти невозможно, поэтому лучшим решением, о котором я мог думать, было то, что ползунок прыгнул прямо туда, где пользователь нажал. –

+0

Ах, хорошая мысль. Теперь я знаю два сценария. Спасибо за разъяснения. :) –