Как я могу привязать непрозрачность winforms к трекбару (слайдеру)

StackOverflow https://stackoverflow.com/questions/2567799

Вопрос

У меня есть 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top