2012-01-16 40 views
2

正如您所看到的,下面给出的代码不是很有用。是否有可能缩短代码。鼠标滚轮向前和向后给出相同的结果(下图)。 Keydown无法配置。从图像列表中加载和查看图像

Private Sub Images_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    count += 1 
    If count + 1 > ImageList1.Images.Count Then 
     count = 0 
    End If 
    PictureBox1.Image = ImageList1.Images.Item(count) 
End Sub 

Private Sub Images_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseWheel 
    count += 1 
    If count + 1 > ImageList1.Images.Count Then 
     count = 0 
    End If 
    PictureBox1.Image = ImageList1.Images.Item(count) 
End Sub 

Private Sub Images_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown 
    If e.KeyCode = Keys.Down Then 
     count += 1 
     If count + 1 > ImageList1.Images.Count Then 
      count = 0 
     End If 
     PictureBox1.Image = ImageList1.Images.Item(count) 
    End If 
End Sub 

回答

1

这里是缩短这种方式,只是使用功能:

Private Sub Images_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    PictureBox1.Image = ImageList1.Images.Item(increaseCount(count)) 
End Sub 

Private Sub Images_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseWheel 
If e.Delta > 0 Then 
    PictureBox1.Image = ImageList1.Images.Item(decreaseCount(count)) 
ElseIf e.Delta < 0 Then 
    PictureBox1.Image = ImageList1.Images.Item(increaseCount(count)) 
End If 
End Sub 

Private Sub Images_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown 
If e.KeyCode = Keys.Down Then 
    PictureBox1.Image = ImageList1.Images.Item(increaseCount(count)) 
End If 
End Sub 

Private Function increaseCount(ByRef count as integer) As Integer 
    count += 1 
    If count + 1 > ImageList1.Images.Count Then 
     count = 0 
    End If 
    Return count 
End Sub 

Private Function decreaseCount(ByRef count as integer) As Integer 
    count -= 1 
    If count - 1 > ImageList1.Images.Count OR count < 0 Then 
     count = 0 
    End If 
    Return count 
End Sub 

e.Delta是你有多少滚动,这取决于对鼠标滚轮滚动的控制面板中的选项。所以我们不能确定这些值是什么,但好事是滚动总是正面的,向下滚动是负面的。

+0

我的代码看起来与上面的代码整齐。有没有鼠标滚轮(FORWARD)和键盘的方法。我已经尝试过,但图像的滚动方向与鼠标滚轮(BACKWARD)和keydown相同。 – Farook

+0

检查编辑的代码@查看这是根据您的需要。 – Harsh

+0

鼠标滚轮滚动工作正常。就像你提到的那样,情况就是轮子滚动了多少。目前它必须缓慢滚动。高超。当你在第一张图片时,停止滚动。我添加了一个Try Catch,引发了一个错误。 Keyup无法正常工作。 Keydown正在工作。我可能不会发表评论,因为我可能会在一段时间后关闭。谢谢。一旦完成,我将点击回答。 – Farook