39

押されたKeyDownことをどのように判断できますか。CtrlUp

private void listView1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Control && e.KeyCode == Keys.Up)
    {
        //do stuff
    }
}    

両方のキーがまったく同じ秒に押されることはないため、機能しません。あなたはいつも最初にCtrl、次に他のものに...

4

13 に答える 13

31

KeyEventArgsの修飾子は次のように確認できます。

private void listView1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Up && e.Modifiers == Keys.Control)
    {
        //do stuff
    }
}  

MSDNリファレンス

于 2009-08-12T11:44:02.503 に答える
13

KeyEventArgsのMSDNページから

if (e.KeyCode == Keys.F1 && (e.Alt || e.Control || e.Shift))
{
    //Do stuff...
}
于 2009-08-12T11:44:14.330 に答える
7

KeyEventArgsはプロパティがありCtrlAltこれらShiftのボタンが押されたかどうかを示します。

于 2009-08-12T11:45:01.490 に答える
7

Keyboardオブジェクトを使用してIsKeyDownプロパティを検出できます。また、ブラウザーのショートカットを上書きしたくない場合は、Handledプロパティを true に設定できます。ただし、ブラウザーのショートカットを上書きすると混乱が生じる可能性があるため、注意してください。

private void Page_KeyDown(object sender, KeyEventArgs e)
{
    // If leftCtrl + T is pressed autofill username
    if (Keyboard.IsKeyDown(Key.T) && Keyboard.IsKeyDown(Key.LeftCtrl))
    {
        txtUser.Text = "My AutoFilled UserName";
        e.Handled = true;
    }
}
于 2011-12-20T21:09:04.813 に答える
2

ModifierKeysプロパティを使用できます。

if (e.KeyCode == Keys.Up && (ModifierKeys & Keys.Control) == Keys.Control)
{
    // CTRL + UP was pressed
}

ModifierKeys値は値の組み合わせである可能性があることに注意してください。したがって、またはキーCTRLの状態に関係なく押されたことを検出する場合は、上記のサンプルのようにビット単位の比較を実行する必要があります。他の修飾子が押されていないことを確認したい場合は、代わりに等しいかどうかを確認する必要があります。SHIFTALT

if (e.KeyCode == Keys.Up && ModifierKeys == Keys.Control)
{
    // CTRL + UP was pressed
}
于 2009-08-12T11:45:10.583 に答える
-1

あなたは私の作業コードを試すことができます:

private void listView1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Up)
    {
        if(e.Alt==true){
            //do your stuff
        }
    }
}

使用する理由がわからないため、このコードを使用します。

(e.Keycode == Keys>up && e.Alt==true)

うまくいきませんでした。

于 2017-01-12T10:14:08.140 に答える
-2

押されたキーを覚えておく必要があります(つまり、bool配列内)。押したとき(キーダウン)は1に、上にしたときは0に位置を設定します。

このようにして、複数のキーを追跡できます。特殊キーのみの配列を作成することをお勧めします

だからあなたはすることができます:

 if (e.KeyCode == Keys.Control)
 {
        keys[0] = true;
 }
// could do the same with alt/shift/... - or just rename keys[0] to ctrlPressed

if (keys[0] == true && e.KeyCode == Keys.Up)
 doyourstuff
于 2009-08-12T11:43:16.390 に答える