Инвертировать окна образует вертикальную полосу прокрутки - PullRequest
0 голосов
/ 09 мая 2011

Я делаю приложение winforms c #.Минимальное значение вертикальной полосы прокрутки находится сверху, а максимальное - снизу, а прокрутка вниз увеличивает значение и наоборот.Есть ли способ его инвертировать, чтобы вверх был выше, а вниз - ниже.

Ответы [ 2 ]

1 голос
/ 09 мая 2011

На самом деле вы не можете «увидеть» значение полосы прокрутки, просто взглянув на нее, так что, другими словами, нет фактической разницы между наличием минимума сверху и максимума снизу, а затем просто инвертировать значение при доступе к нему:

private void ScrollBar_Scroll(object sender, ScrollEventArgs e)
{
    // get the value (0 -> 100)
    int value = scrollBar.Value;

    // invert it (100 -> 0)
    value = 100 - value;

    // display it
    someLabel.Text = value.ToString();
}

Конечно, вы также можете переопределить класс VScrollBar и добавить свое собственное свойство "инвертированного значения":

public class InvertedScrollBar : VScrollBar
{
    /// <summary>
    /// Gets or sets the "inverted" scrollbar value.
    /// </summary>
    /// <value>The inverted value.</value>
    public int InvertedValue
    {
        get
        {
            int offset = this.Value - this.Minimum;
            return this.Maximum - offset;
        }
        set
        {
            int offset = this.Maximum - value;
            this.Value = this.Minimum + offset;
        }
    }
}

Обратите внимание, что максимум при настройке должен быть больше , чем минимум.

0 голосов
/ 07 марта 2013

Значения, возвращаемые свойством Value элемента ScrollBar, изменяются от scrollBar.Minimum до scrollBar.Maximum - scrollBar.LargeChange.

Таким образом, если полоса прокрутки имеет Минимум 5, Максимум 15 и LargeChange (который удваивается как видимая часть диапазона прокрутки) равен 3, то возможные возвращаемые значения изменяются от 5 до 12.

Итак, чтобы инвертировать значение, вы действительно хотите использовать:

scrollBar.Minimum + scrollBar.Maximum - scrollBar.LargeChange - scrollBar.Value

(Обычно вы можете думать о значении как о положении левого или верхнего края большого пальца. Приведенная выше формула даст вам нижний край большого пальца. Если вам все еще нужен верхний край (то есть значения идут от 8 до 15 в приведенном выше примере), затем используйте:

scrollBar.Minimum + scrollBar.Maximum - scrollBar.Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...