反转窗口形成垂直滚动条
本文关键字:垂直 滚动条 窗口 | 更新日期: 2023-09-27 17:55:23
我正在制作一个winforms应用程序c#。垂直滚动条最小值位于顶部,最大值位于底部,向下滚动会增加值,反之亦然。有没有办法反转它,让上是高,下是低。
您实际上无法仅通过查看滚动条来"看到"滚动条的值,因此,换句话说,将最小值放在顶部,将最大值放在底部,然后在访问它时只是反转值之间没有实际区别:
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;
}
}
}
请注意,在配置最大值时,最大值仍必须大于最小值。
滚动条的 Value 属性返回的值从 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