在FlowLayoutPanel中获取MouseWheel滚动位置
问题描述:
我有一个FlowLayoutPanel,可以由用户在垂直轴上滚动。我有一个用来看看那里的用户已滚动到并提供405px块中的位置编号下面的事件处理:在FlowLayoutPanel中获取MouseWheel滚动位置
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();
}
这工作得很好,并确切地做什么,我当用户滚动使用需要垂直条。我遇到的问题是我需要用相同的值更新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中获得滚动的滚动位置?
答
多亏了汉斯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值是负的,我需要一个正值。
使用面板的AutoScrollPosition属性。 –