Comment convertir une chaîne de Clés

essayer de mettre en œuvre une combinaison de keypressing pour mon programme
actuellement peut détecter les keypressed (en ce post décrit comment) mais seulement prédéfinis dans le code, mais je tiens à le magasin en condig fichier puis de le lire et de les utiliser si pressé.

Maintenant peut stocker et lire comme une chaîne de caractères actuellement d'essayer de convertir les lus de la chaîne d' Keys, à l'aide de code suivant:

Stocker dans le fichier de configuration:

<add key="open" value="ControlKey,N"
<add key="close" value="ControlKey,Q" />
<add key="clear" value="ControlKey,D" />
<add key="settings" value="ControlKey,S" />
<add key="colorKey" value="ControlKey,K" />
<add key="fontKey" value="ShiftKey,T" />
<add key="defaultKey" value="ControlKey,P" />

et de l'utiliser

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        TypeConverter converter = TypeDescriptor.GetConverter(typeof(Keys));
        string[] keyValueTemp;

        keyValueTemp = cm.GetValueString("open").ToString().Split(',');
        string key1 = keyValueTemp[0];
        string key2 = keyValueTemp[1];

        Keys keys1 = (Keys)converter.ConvertFromString(key1);
        Keys keys2 = (Keys)converter.ConvertFromString(key2);

        if (ModifierKeys == keys1 && e.KeyCode == keys2)
        {
            string keyPressed = e.KeyCode.ToString();
            MessageBox.Show(keyPressed);
        }
    }

Mais, a prochaine

Comment convertir une chaîne de Clés
Si - comme vous le voyez - ce convertir Touche de contrôle pour Shiftkey, aussi essayez d'utiliser du code if (ModifierKeys.ToString() == keyValueTemp[0] && e.KeyCode.ToString() == keyValueTemp[1]), mais il n'est pas trop de travail.

si l'utilisation de ce code

        if (e.Modifiers == Keys.Control && e.KeyCode == Keys.N)
        {
            string keyPressed = e.KeyCode.ToString();
            MessageBox.Show(keyPressed);
        }

toutes les œuvres

Q: comment puis-je convertir la chaîne de Clés et de les comparer avec keyPressed événements?

MODIFIER

Donc trouvé mon erreur

Keys key = (Keys)converter.ConvertFromString(keyValueTemp[0]);
Keys key2 = (Keys)converter.ConvertFromString(keyValueTemp[1]);
if (e.Modifiers == key && e.KeyCode == key2)
   {
       MessageBox.Show(e.KeyCode.ToString());
   }

oubliez pas d'ajouter e - de gestionnaire d'événements

d'une autre manière - comme l'écrit AccessDenied

 Keys key = (Keys)Enum.Parse(typeof(Keys), keyValueTemp[0], true);
Cochez cette réponse peut-être il serait utile. stackoverflow.com/questions/12449484/...

OriginalL'auteur gbk | 2013-09-29