我有一个FlowLayoutPanel,可以由用户在垂直轴上滚动。我有以下事件处理程序,用于查看用户滚动到的位置,并提供405px块内的位置编号:
private void ChangedParentFlowPanel_Scroll(object sender, ScrollEventArgs e)
{
int NewPos = e.NewValue;
int range = (NewPos - 1) / 405 + 1;
CurrentIndex_Changed = range;
tCounter.Text = CurrentIndex_Changed.ToString();
}
这很好用,当用户使用Verticle栏滚动时,它正是我需要的。我遇到的问题是我需要使用相同的值更新tCounter,但这次是用户使用鼠标滚轮滚动时。我尝试了下面的内容,但这只是在滚动时提供鼠标位置的Y轴值,而不是滚动本身的位置:
private void ChangedParentFlowPanel_Wheel(object sender, MouseEventArgs e)
{
int NewPos = e.Location.Y;
MessageBox.Show(NewPos.ToString());
int range = (NewPos - 1) / 405 + 1;
CurrentIndex_Changed = range;
tCounter.Text = CurrentIndex_Changed.ToString();
}
问题是......当使用鼠标滚轮时,如何在ChangedParentFlowPanel中获得滚动的滚动位置?
答案 0 :(得分:0)
感谢Hans Pasant的评论,答案是:
private void ChangedParentFlowPanel_Wheel(object sender, MouseEventArgs e)
{
int NewPos = Math.Abs(ChangedParentFlowPanel.AutoScrollPosition.Y);
int range = (NewPos - 1) / 405 + 1;
CurrentIndex_Changed = range;
tCounter.Text = CurrentIndex_Changed.ToString();
}
Math.Abs,因为返回的滚动Y值为负,我需要一个正值。