简体   繁体   中英

C# parse from string to Keys

Currently I have to parse from string to Keys somehow. So basically as input I get something like "Keys.Shift" and somehow I need be able to parse this to keys so I can use it futher in the application.

I've found a solution but it doesn't work:

Keys key;
Enum.TryParse("Enter", out key);

I get a "static types cannot be used as type arguments". Does someone know a workaround or something?

Thanks in advance.

It sounds like you've got another class called Keys somewhere. Here's an example demonstrating the same problem (although there's a second error around the declaration of key which you haven't mentioned; I suspect you've got that error as well though):

using System;
using System.Windows.Forms;

static class Keys {}

class Program
{
    static void Main()
    {
        Keys key;
        Enum.TryParse("Enter", out key);
        Console.WriteLine(key);
    }
}

If you comment out the static class Keys {} the code compiles fine, which is why I suspect you've got that class somewhere - or a using directive bringing something similar in from another library.

The simplest fix is just to fully-qualify which Keys type you mean:

using System;
using System.Windows.Forms;

static class Keys {}

class Program
{
    static void Main()
    {
        System.Windows.Forms.Keys key;
        Enum.TryParse("Enter", out key);
        Console.WriteLine(key);
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM