使用字符串作为参数运行非静态方法

时间:2016-12-19 19:40:15

标签: c# methods

我使用s.Keyboard.Keypress(VirtualKeyCode.VK_H);方法。我希望能够将VK_H值交换到我们正在运行的“Test”的其他字符。我正在使用InputSimulation库。

因此在测试中它会运行一系列输入,如:

s.Keyboard.KeyPress(VirtualKeyCode.VK_T);
s.Keyboard.KeyPress(VirtualKeyCode.VK_E);
s.Keyboard.KeyPress(VirtualKeyCode.VK_S);
s.Keyboard.KeyPress(VirtualKeyCode.VK_T);

我的代码是

InputSimulator s = new InputSimulator();

char[] word = "Test".ToCharArray();
for(int i = 0; i<word.Length; i++)
{
    s.Keyboard.KeyPress(VirtualKeyCode.VK_H);
}

1 个答案:

答案 0 :(得分:0)

我无法想象我(作为审稿人)会让C#代码通过依赖于枚举记录的名称的情况。枚举中的记录应被视为&#34; 数字的名称&#34;并简单地帮助您作为程序员识别数字。

经常使用VirtualKeyCode.VK_T.ToString()之类的东西,但在我看来应该避免使用(让我们暂时不做记录和调试目的)。我知道这是一种从文本中获取文本的超级简单方法,但它很丑陋。现在回答你的问题。我会用这个:

    InputSimulator s = new InputSimulator();

    foreach(var c in "test")
    {
       VirtualKeyCode keyCode;

       switch(c) 
       {
          case 't':
             keyCode = VirtualKeyCode.VK_T; //Used twice in the text "test"
             return;
          case 'e':
             keyCode = VirtualKeyCode.VK_E;
             return;
          case 's':
             keyCode = VirtualKeyCode.VK_S;
             return;
          default:
             throw new NotImplementedException($"The following character has not been implemented correctly: {c}");
       }

       //Go ahead and use keyCode here
   }