2017-06-29 76 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值是負的,我需要一個正值。