Как я могу привязать непрозрачность winforms к трекбару (слайдеру)
-
24-09-2019 - |
Вопрос
У меня есть winform с BindingSource
у которого есть свойство int с именем Opacity
в своем DataSource
.У меня также есть TrackBar
в winform, которую я хочу использовать для управления Opacity
из winform.
Я связал Value
собственность на TrackBar
к тому Opacity
и это работает просто отлично, сдвигая TrackBar
изменит переменную с TrackBar.Minimum
(0) к TrackBar.Maximum
(1).
Я также связал Opacity
свойство winform к этому значению, однако, поскольку TrackBar
значения переходят только от минимального к максимальному в +/ -1, а не +/- .1 или около того (например Opacity
делает), это неправильно скрывает winform.Вместо этого значение 0 сделает его непрозрачным, а значение 1 сделает его полностью видимым.
Мне нужен способ работать в рамках архитектуры, описанной выше, но получить TrackBar
чтобы изменить его значение с 0 на 1 с определенными приращениями, меньшими 1.
Решение
Я думаю, что самый чистый способ сделать это - создать свойства UserControl
, которые наследуются непосредственно от TrackBar
, скрывающие свойства Value
, SmallChange
, Minimum
, Maximum
и TickFrequency
с одноименными свойствами double
:
Другие советы
Если вы привязываете данные, то у вас есть класс данных, который имеет double OpacityForSlider
(или что-то подобное), что вы связали Value
из числа TrackBar
Для.
Установите ползунки min и max равными 0-100 и добавьте это значение в свой класс данных
public double OpacityForForm
{
get { return this.OpacityForSlider / 100; }
}
Теперь привяжите свои winforms Opacity
к этому, а не к OpacityForSlider