2017-06-29 74 views
0

我有一个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中获得滚动的滚动位置?

+0

使用面板的AutoScrollPosition属性。 –

回答

0

多亏了汉斯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值是负的,我需要一个正值。