Есть ли способ (временно) предотвратить изменение пользователем значения TrackBar путем перетаскивания ползунка? Единственный способ, который я нашел, - установить значение Enabled
на false, но он также вычеркивает трек-лист.System.Windows.Forms.Trackbar - как запретить пользователю перетаскивать ползунок?
Edit: Поскольку I'm получаю больше ответов о том, почему я не должен это делать, а не то, как это можно сделать, я решил объяснить, почему я хотел бы сделать это.
Я не использую его, чтобы позволить пользователю настроить значение некоторого свойства приложения, но дисплей и управления прогресса какого-либо действия. Представьте себе, например, ваш любимый медиаплеер - он, вероятно, содержит некоторый контроль (я бы назвал его трекбаром, но английский не является моим родным языком, поэтому, возможно, это неправильно) , что отображает, какую часть фильма он играет в данный момент, но также позволяет управление это - перемещение назад или вперед во времени и просмотр другой части.
Я использую трекбол именно таким образом. Я не знаю никаких других компонентов, которые были бы лучше (Progressbar не позволит мне изменить «позицию»). Он отлично работает, Единственное, что я хотел бы сделать, это не позволять пользователю «использовать трек-бар, если фильм не приостановлен».
По этой причине я неоднократно использовал компонент трек-панели в Delphi 6, но когда он был отключен, он не седел, и, на мой взгляд, он работал нормально. Вот почему я спросил здесь, если в C# можно добиться такого же эффекта.
Я не хочу седеть из трекбара, потому что, по моему мнению, серые компоненты неактивны ... что не мое дело, мой трекбал всегда активен, иногда просто пользователь не может изменить его значение, потому что он изменен программно ... Использование события ValueChanged - хорошая идея, хотя слайдер иногда «мигает», когда я пытаюсь переместить его, и он сразу возвращается в правильное положение - вот почему я хотел каким-то образом помешать пользователю перемещать Ползунок вообще ... Но, во всяком случае, спасибо! –
Итак, я думаю, что нет другого способа, чем событие ValueChanged, поэтому я принимаю ваш ответ ... Еще раз спасибо ... –
Интересно, поможет ли включение двойной буферизации уменьшить мерцание? Или, альтернативно, создать собственный пользовательский элемент управления через GDI +, который не будет принимать пользовательский ввод, если он специально не включен? – Xander