|
分類:[.NET 全般]
VB.NETを使用しております。
画像ビューアのようなものを作成していまして、
矢印キーを押すと画像が入れ替わるような仕様になっています。
更に、シフトキーを押しながら、矢印キーを押すと早送り(1フレーム飛ばし)で画像が入れ替わるようにしています。
一応、そこまでは以下のコードでうまくいっているのですが、
一つだけ問題があります。
先にシフトキーを押してから、矢印キーを押すとうまく動作するのですが、
矢印キーを押した状態でシフトキーを押すと
フレーム送りの動作が停止してしまい、再度、矢印キーを押し直す必要があります。
そのため、矢印キーを押している間だけシフトキーを押しても
矢印キーの動作が止まらないようにしたいのですが
どのようにすれば良いでしょうか?
以下はコードの抜粋です。
フォーム生成時に、
CursorMovementKeyDownは全てのコントロールのKeydownに対して、
再帰的にAddHandlerされています。
Protected Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean
If (keyData And Keys.KeyCode) = Keys.Shift Then
’シフトキーが押されていると抜けたいがそれでも矢印キーはキャンセルされてしまう
Return True
End If
If FrameChange(keyData And Keys.KeyCode) = True Then
Return True
Else
Return MyBase.ProcessDialogKey(keyData)
End If
End Function
Private Sub CursorMovementKeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
If e.KeyCode = Keys.ShiftKey Then
’シフトキーが押されていると抜けたいがそれでも矢印キーはキャンセルされてしまう
e.Handled = True
Exit Sub
End If
e.Handled = FrameChange(e.KeyCode)
End Sub
Function FrameChange(keyCode As Keys) As Boolean
Dim incre As Integer = 1
’シフトキーが押されていると増分を2に変更する
If Control.ModifierKeys = Keys.Shift Then
incre = 2
End If
画像を変更するコード
End Sub
|