web-dev-qa-db-fra.com

KeyDown: riconoscimento di più chiavi

Venez posso déterminant dans KeyDown quelloCtrlUpè stato premuto.

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

non può funzionare, car il est possible que j'aie goûté et que ce soit fini ou seconde. Devi semper all'inizioCtrle poi l'altro ...

33
Kai

Vous pouvez vérifier les modificateurs de KeyEventArgs comme suit:

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

Référence MSDN

28
Garry Shutler

Depuis la page MSDN sur KeyEventArgs :

if (e.KeyCode == Keys.F1 && (e.Alt || e.Control || e.Shift))
{
    //Do stuff...
}
9
Matt Hamilton

Nel KeyEventArgs ci son proprietàCtrl,AlteShiftLa plupart des choses se passent sans interruption.

7
IordanTanev

Vous pouvez essayer d'utiliser l'objet Keyboard pour détecter la propriété IsKeyDown. De même, si vous ne souhaitez pas que le raccourci du navigateur soit annulé, vous pouvez définir la propriété Handled sur true.Mais soyez prudent lorsque vous utilisez des raccourcis du navigateur, car cela pourrait créer une confusion.

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;
    }
}
5
zulumojo
private void listView1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Up && Keyboard.IsKeyDown(Key.LeftCtrl))
    {
         //do stuff
    }
}

Ce code ne fonctionnera que si vous appuyez d'abord sur LeftCtrl, puis sur "UP" . Si l'ordre n'a pas d'importance, je recommande celui-ci:

if ((Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))&& Keyboard.IsKeyDown(Key.Z))
{
    //do stuff
}

Dans ce cas, les deux Ctrl sont pris en compte, sans importance pour l'ordre.

2
Siegfried.V

Vous pouvez également utiliser la propriété Modifier les clés:

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

Si vous préférez, vous devez modifier les clés de votre clavier, choisir une combinaison de couleursCTRLstato premuto indipendentemente dallo stato delSHIFToALTchiavi, sarà necessario eseguire un confronto un peu vient nel mio esempio sopra. Si vous envisagez d'assister à une modification de la structure, cliquez sur le statut, cliquez sur le lien suivant:

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

J'ai testé ci-dessous le code. Ça marche...

private void listView1_KeyDown(object sender, KeyEventArgs e)
    {
        if ((int) e.KeyData == (int) Keys.Control + (int) Keys.Up)
        {
            MessageBox.Show("Ctrl + Up pressed...");
        }
    }
0
Moseyza

Il en va de même pour les suggestions de suggestions concernant tous les détails du comportement de chaque personne [Alt] [Destra]. L'histoire suivante: https://social.msdn.Microsoft.com/Forums/vstudio/en-US/4355ab9a-9214-4fe1-87ea-b32dfc22946c/issue-with-alt-key-and- touche bas-événement? forum = WPF

Si vous obtenez une qualification similaire dans un assistant de classe Shortcut a été ajouté:

_public Shortcut(KeyEventArgs e) : this(e.Key == System.Windows.Input.Key.System ? e.SystemKey : e.Key, Keyboard.Modifiers, false) { }

public Shortcut(Key key, ModifierKeys modifiers, bool createDisplayString)
{
    ...
} 
_

Dopo "re-cartographie" de la valeur originale (notare la parte _e.Key == System.Windows.Input.Key.System ? e.SystemKey : e.Key_), l’authenticité élaborée toujours continue.

0
mike

questeurs de musique amusants. Fai attenzione a gestire l'evento KeyUp e non keyDown.

private void mainForm_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A)
        {
             //insert here
        }
    }

Pour moi, keyDown non ha funzionato, keyUp ha lavorato invece per lo stesso codice.

Pas si mal que ça, ça se passe keyDown avant que le pouvoir soit passé, c'est un avant-goûtctrlchiave, quindi se hai premutoctrl+Uptu premectrlChiave Prima delUPcliquez sur ce lien pour en savoir plus sur le premier titre de la chanson, et cliquez sur-le-titre pour obtenir un aperçu de l'état de votre conscience.

Durée d'utilisation KeyUp, l'évènement non résolu en fonction de l'état de l'enfant, le choix est déjà possiblectrlle premier goût du moment, c'est ce que vous devez savoir.

0
A. Harkous