Я использую этот 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]");
}
Он выполняет еще пункт. Похоже, что сравнение строк на самом деле не работает в этом случае даже ты как строка (e.KeyCode.ToString() и Program.KeyboardTradeHotkey одинаковы.
Что может быть причиной этого?
Вы проверили результаты 'e.KeyCode.ToString()' и 'Program.KeyboardTradeHotKey', чтобы убедиться, что a) корпус тот же, и b) нет начальных или конечных пробелов? – ChrisF
[14: 31: 11.107988] - [Клавиатура] [PRESS] | Oemtilde | True | Oemtilde | True Escape Оказывается, в переменной есть \ n. Не знаю, как это получилось. Но самое забавное, что файл журнала показывал его точно так же, но когда я вставил его сюда, он показал, что после Oemtilde есть \ n после того, как Trim() исправил его. – MadBoy