27

キーダウンイベントを使用して、押されたキーを検出し、さまざまな操作のためにいくつかのキーの組み合わせを使用しています。

if (e.KeyCode == Keys.C && e.Modifiers == Keys.Control && e.Modifiers == Keys.Shift)
{
    //Do work
}
else if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
{
    //Paste
}

何らかの理由で、Ctrl++を押したキーの組み合わせが機能していませんShift。私はそれらを再注文し、それが+Cからの干渉である可能性があると考えて上部に配置し、問題を引き起こしているかどうかを確認するために+を削除しました。それでも動作しません。おそらく非常に単純なことだと思いますが、それが何であるかを完全に理解することはできません。1つの修飾子+1つのキーの組み合わせはすべて正常に機能します。2つ目の修飾子を追加するとすぐに機能しなくなります。CtrlCCtrlC

4

8 に答える 8

46
if (e.KeyCode == Keys.C && e.Modifiers == (Keys.Control | Keys.Shift))
{
    //Do work
}
else if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
{
    //Paste
}
于 2009-09-16T19:04:29.017 に答える
9

試しましたe.Modifiers == (Keys.Control | Keys.Shift)か?

于 2009-09-16T19:04:37.690 に答える
1

これは、 + 元に戻す および + + やり直し 操作に対して行ったものでCtrlありZCtrl機能ShiftZました。

  Private Sub Form_Main_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
    Select Case e.KeyCode
      Case Keys.Add
        diagramView.ZoomIn()
      Case Keys.Subtract
        diagramView.ZoomOut()
      Case Keys.Z
        If e.Modifiers = Keys.Control + Keys.Shift Then
          diagram.UndoManager.Redo()
        ElseIf e.Modifiers = Keys.Control Then
          diagram.UndoManager.Undo()
        End If
    End Select
  End Sub
于 2014-10-08T21:35:31.010 に答える
0

これを試して。希望どおりに動作する必要があり、少し単純です。

 if (e.Control)
 {
    if (e.Shift && e.KeyCode == Keys.C)
    {
       //Do work
    }
    else if (e.KeyCode == Keys.V)
    {
       //Paste
    }
 }
于 2009-09-16T19:04:59.293 に答える