反转窗口形成垂直滚动条

时间:2011-05-09 06:54:48

标签: c# .net winforms scrollbar

我正在制作winforms app c#。垂直滚动条最小值位于顶部,最大值位于底部,向下滚动会增加值,反之亦然。有没有办法将其反转,以便向上和向下都更低。

2 个答案:

答案 0 :(得分:1)

你只能通过查看它实际上“看到”滚动条的,换句话说,在顶部有min,在底部有max之间没有实际差异,然后在访问时反转该值:

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;
        }
    }
}

请注意,配置时,最大值仍然必须<最大 <最小。

答案 1 :(得分:0)

ScrollBar的Value属性返回的值从scrollBar.Minimum变为scrollBar.Maximum - scrollBar.LargeChange

因此,如果滚动条的最小值为5,最大值为15,而LargeChange(滚动范围的可见部分加倍)为3,则可能的返回值从5到12。

因此,要反转该值,您实际上想要使用:

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

(通常你可以把Value视为拇指左边或上边缘的位置。上面的公式会给你拇指的下边缘。如果你还想要上边缘(即值从8到15)在上面的示例中),然后使用:

scrollBar.Minimum + scrollBar.Maximum - scrollBar.Value