我使用这个library钩键,我有一些问题比较e.KeyCode.ToString()与相同的字符串。字符串比较无法正常工作?
我有变量,它的等效字符串的
Keys.Oemtilde
- > Program.KeyboardTradeHotkey = "Oemtilde";
我把它放在字符串,因为我读XML文件,字符串,我似乎无法得到任何的方法来转换字符串到Keys
。
如果我使用这种方式:
if (e.KeyCode.Equals(Keys.Oemtilde)) {
Logging.AddToLog("[Keyboard][Check] " + e.KeyCode);
} else {
// failed to catch - executes else
Logging.AddToLog("[Keyboard][PRESS]");
}
它工作正常和:执行Logging.AddToLog("[Keyboard][Check] " + e.KeyCode);
。
如果我使用它:
if (e.KeyCode.ToString() == Program.KeyboardTradeHotkey) {
Logging.AddToLog("[Keyboard][Check] " + e.KeyCode);
} else {
// failed to catch - executes else
Logging.AddToLog("[Keyboard][PRESS]");
}
它执行else子句。这似乎是字符串比较不会在这种情况下,真正起作用的,甚至你都串(e.KeyCode.ToString()和Program.KeyboardTradeHotkey是相同的。
什么可以这样做的原因?
您是否检查过'e.KeyCode.ToString()'和'Program.KeyboardTradeHotKey'的结果,以确保a)套管是相同的并且b)没有前导或尾随空格? – ChrisF 2010-06-23 12:57:51
[14:31:11.107988] - [键盘] [新闻] | Oemtilde | True | Oemtilde | True Escape 原来变量中有\ n。不知道它是如何到达那里..但有趣的是日志文件显示它完全相同,但是当我将它粘贴到此处时,它显示在Oemtilde之后有一个\ n,所以Trim()修复了它。 – MadBoy 2010-06-23 13:04:10