【问题标题】:Get MouseWheel Scroll Position in a FlowLayoutPanel在 FlowLayoutPanel 中获取 MouseWheel 滚动位置
【发布时间】:2017-06-29 17:32:31
【问题描述】:

我有一个 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();
}

当用户使用垂直栏滚动时,它工作得很好,并且完全符合我的需要。我遇到的问题是我需要用相同的值更新 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 中滚动条的滚动位置?

【问题讨论】:

  • 使用面板的 AutoScrollPosition 属性。

标签: c# scroll flowlayoutpanel


【解决方案1】:

感谢 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 值是负值,我需要一个正值。

【讨论】:

    猜你喜欢
    • 2015-10-21
    • 2012-08-31
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 2011-11-01
    • 2019-04-09
    相关资源
    最近更新 更多