Вам придется обработать событие KeyDown
и KeyUp
, чтобы определить, удерживается ли клавиша Ctrl . Это значение должно храниться на уровне класса, поскольку оно будет использоваться другими подпрограммами, кроме событий KeyDown
и KeyUp
.
Затем вы пишете код для обработки события MouseWheel
формы. Прокрутка вниз (к вам) приводит к отрицательному значению свойства Delta
MouseEventArgs
. Прокрутка вверх, очевидно, обратная. Значение свойства Delta всегда равно 120.
Microsoft объясняет это значение следующим образом:
В настоящее время значение 120 является стандартом для одного задержания. Если будут введены мыши с более высоким разрешением, определение WHEEL_DELTA может стать меньше. Большинство приложений должны проверять положительное или отрицательное значение, а не общую сумму.
В вашем контексте вы просто проверите знак Дельты и выполните действие.
Вот пример кода, реализующий базовую функциональность 'zoom':
Public Class Form1
Enum ZoomDirection
None
Up
Down
End Enum
Dim CtrlIsDown As Boolean
Dim ZoomValue As Integer
Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
ZoomValue = 100
End Sub
Private Sub Form1_KeyDown_KeyUp(ByVal sender As Object, _
ByVal e As KeyEventArgs) _
Handles Me.KeyDown, Me.KeyUp
CtrlIsDown = e.Control
End Sub
Private Sub Form1_MouseWheel(ByVal sender As Object,
ByVal e As MouseEventArgs) _
Handles Me.MouseWheel
'check if control is being held down
If CtrlIsDown Then
'evaluate the delta's sign and call the appropriate zoom command
Select Case Math.Sign(e.Delta)
Case Is < 0
Zoom(ZoomDirection.Down)
Case Is > 0
Zoom(ZoomDirection.Up)
Case Else
Zoom(ZoomDirection.None)
End Select
End If
End Sub
Private Sub Zoom(ByVal direction As ZoomDirection)
'change the zoom value based on the direction passed
Select Case direction
Case ZoomDirection.Up
ZoomValue += 1
Case ZoomDirection.Down
ZoomValue -= 1
Case Else
'do nothing
End Select
Me.Text = ZoomValue.ToString()
End Sub
End Class
Для получения дополнительной информации о вашем вопросе прочитайте следующее:
- MSDN: событие Control.KeyDown
- MSDN: событие Control.KeyUp
- MSDN: событие Control.MouseWheel
- MSDN: класс MouseEventArgs