【发布时间】:2014-07-02 12:47:03
【问题描述】:
我试图确定滚动条的百分比值以响应其OnScroll 事件,尽管我很难确定实际百分比。我认为它应该像做当前滚动值除以最大值的比率一样简单。虽然这会产生奇怪的结果。
void ThePanel_Scroll(object sender, ScrollEventArgs e)
{
if (e.ScrollOrientation == ScrollOrientation.VerticalScroll)
{
double scrollPercent = (double)e.NewValue / (double)ThePanel.VerticalScroll.Maximum;
Console.Out.WriteLine("Max: " + ThePanel.VerticalScroll.Maximum + " Min: " + ThePanel.VerticalScroll.Minimum);
Console.Out.WriteLine("OldVal: " + e.OldValue + " NewVal: " + e.NewValue + " Val: " + ThePanel.VerticalScroll.Value);
Console.Out.WriteLine("CurPer: " + scrollPercent);
}
}
当运行此代码并将条一直滚动到最大位置时,我可能会得到类似这样的输出
Max: 529 Min: 0
OldVal: 170 NewVal: 170 Val: 170
CurPer: 0.321361058601134
即使滚动条位于最大位置,它的Value 也不是。我认为原因是Value 基于滚动条的顶部。我的问题是我无法确定滚动条“条”本身的高度/大小,以计算适当的百分比。
根据使用条形高度和Value 来确定百分比的正确方法是,还是我错过了其他东西?如果它基于高度,我如何确定?通过VScrollProperties MSDN 阅读,那里没有任何东西可以告诉我酒吧本身的高度。
【问题讨论】: