检查鼠标滚轮时图像是否在底部
本文关键字:是否 底部 图像 鼠标 检查 | 更新日期: 2024-09-20 15:14:49
我正在增强显示TIFF图像的Windows窗体应用程序。该应用程序在面板顶部有一个图片框,每次显示一个图像页面(用户可以单击缩略图查看特定图像)。如果有多个图像,用户希望通过使用鼠标滚轮等事件来查看下一个图像。我们目前有上一个和下一个箭头按钮/功能,但他们想要更多)
我认为我应该做的是在鼠标滚轮事件中找出图像是否在底部,然后选择下一个。同样,相反的方式,如果他们使用鼠标滚轮向上移动,则获取上一张图像并滚动到底部。
此外,我需要注意的是,图像可能比面板大,因此会出现垂直滚动条。因此,当使用鼠标滚轮时,需要确保它在底部。
提前谢谢。
您可以使用MouseWheelEvent在滚动中添加一个事件处理程序,然后查看e.Delta
如果e.delta为正,则向上滚动,如果为负,则只增加或减少要显示的图像索引。
这有道理/回答你的问题?
我找到了这个的解决方案
1) 创建了一个新变量来存储以前的垂直滚动值(prevVScrollVal)
2) 创建新的鼠标事件处理程序
this.imageContainer.MouseWheel += new MouseEventHandler(this.imageContainer_MouseWheel);
3) 在鼠标事件处理程序中,通过查看e.delta来确定是向上还是向下,然后检查上一个滚动值是否相同,并相应地切换图像
private void imageContainer_MouseWheel(object sender, MouseEventArgs e)
{
if (e.Delta > 0)
{
imageContainer_MouseWheelScrollUp(sender, e);
}
else if (e.Delta < 0)
{
imageContainer_MouseWheelScrollDown(sender, e);
}
prevVScrollVal = imageContainer.VerticalScroll.Value;
}
private void imageContainer_MouseWheelScrollUp(object sender, MouseEventArgs e)
{
if (imageContainer.VerticalScroll.Value == 0 &&
prevVScrollVal == 0 &&
current > 1)
{
setPagePrev();
}
}
private void imageContainer_MouseWheelScrollDown(object sender, MouseEventArgs e)
{
if (imageContainer.VerticalScroll.Value == prevVScrollVal &&
current < endPage)
{
setPageNext();
}
}
/// <summary>
/// Sets the page to the Next
/// </summary>
private void setPageNext()
{
setPage(current + 1);
}
/// <summary>
/// Sets the page to the Previous
/// </summary>
private void setPagePrev()
{
setPage(current - 1);
prevVScrollVal = imageContainer.VerticalScroll.Maximum;
imageContainer.VerticalScroll.Value = imageContainer.VerticalScroll.Maximum;
imageContainer.PerformLayout();
}
/// <summary>
/// Sets the page to be viewed
/// </summary>
/// <param name="page">page to be viewed</param>
public void setPage(int page)
{ .... }