从鼠标滚轮事件获取滚动条位置

本文关键字:获取 滚动条 位置 事件 鼠标 | 更新日期: 2023-09-27 18:26:55

我有一个winform面板。我想捕捉面板的滚动和鼠标滚轮事件。对于这两种情况,我都想检查滚动条的位置。

当滚动条位于底部(滚动结束时…)时,控件应触发事件。

我已经为面板做了这件事。滚动如下:

private void Panel1_Scroll(object sender, ScrollEventArgs e)
{            
    if (e.NewValue == Panel1.VerticalScroll.Maximum - Panel1.VerticalScroll.LargeChange+1)
    {
      //do some operation
    }
}

但是对于MouseEventArgs,没有任何值(e.newvalue)来指示滚动条的位置。

如何从鼠标滚轮事件中获取滚动条位置?

同样根据我的要求,两个事件调用都有相同的逻辑实现,所以我想写一次逻辑。

我怎样才能做到这一点?

从鼠标滚轮事件获取滚动条位置

经过进一步分析,我发现panel1.VerticalScroll.Value相当于CCD_ 3的CCD_。

因此,对于代码的可重用性,可以使用以下内容:

private void panel1_Scroll(object sender, ScrollEventArgs e)
{
  panel1_scrollcheck(e.NewValue);
}
private void panel1_MouseWheel(object sender, MouseEventArgs e)
{
  panel1_scrollcheck(panel1.VerticalScroll.Value);
}
private void panel1_scrollcheck(int currPos)
{
  if (currPos == panel1.VerticalScroll.Maximum - panel1.VerticalScroll.LargeChange+1)
    {
      //Put the logic here
    }
}

尝试使用PanelVerticalScroll属性。

    void MouseWheel(object sender, MouseEventArgs e)
    {
        if (_panel.VerticalScroll.Value > _panel.VerticalScroll.Maximum - _panel.VerticalScroll.LargeChange)
            MessageBox.Show("Bottom");
    }