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