0

我正在使用这个来挂钩键,并且在将 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 都相同,在这种情况下,字符串比较似乎也不起作用。

这可能是什么原因?

4

4 回答 4

4

另一个更改使用 string.Equals 函数来比较字符串

string1.Equals(string2)
于 2010-06-23T13:00:08.060 回答
3

我认为这是因为 KeyCode.ToString() 没有返回您期望它返回的内容。查看 Watch 中的视图。

于 2010-06-23T12:57:22.883 回答
0

== 和 .Equals() 的区别在于引用类型和值类型的区别。此链接给出了不同结果的示例:== 和 .Equals() 的比较

我也同意 pranay_stacker。

于 2010-06-23T13:04:59.590 回答
0

无需查看您正在使用的第一个(工作)代码示例的库,它看起来就像是在比较枚举值,所以它返回的是一个数字而不是一个字符串。

于 2010-06-23T13:05:08.130 回答