2013-05-20 2 views
2

У меня возникла проблема с набором некоторых специальных символов SendKey.Send("[email protected]#$%^&*()_+|").SendKey не будет печатать некоторые символы

Когда я пытаюсь ввести [email protected]#$%^&*()_+|, набирается только [email protected]#$*_|.

Есть ли способ обойти это? Поскольку я сначала собираю строку в ListBox, я мог бы также заменить эти символы до фактического ввода. Просто интересно, есть ли другой способ.

Для справки, это, как я в конечном итоге делает это:

private string textToPseudo(string text) 
{ 
    string temp = string.Empty; 

    foreach (char c in text) 
    { 
     if (c == ' ') 
      temp += " "; 
     else 
      temp += "{" + c + "}"; 
    } 
    return temp; 
} 
+0

Если вы изменили порядок, то те же чартеры все равно не пройдут (например, если вы положили '!' Между '()' делает '!' Go ​​missing?) –

+0

@Scott Chamberlain, круглые скобки по-прежнему не отображаются, но появляется восклицательный знак. Я заметил, что вместо этого клавиша '~' отправляет ответ. – HelpNeeder

ответ

3

Некоторые символы имеют специальное значение для SendKeys. Например. % - клавиша Alt,^- клавиша Ctrl + клавиша Shift. Вы должны заключить в фигурные скобки {} для их использования.

+0

Из документов: [SendKeys] (http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys%28VS.80%29.aspx) –

+0

Таким образом, единственным вариантом является замена знаков с их эквивалентными командами из [SendKeys Class] (http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx)? – HelpNeeder

+0

Не обязательно - вы можете заменить каждый знак тем, что он окружен фигурными скобками. Например, замените '+' на '{+}' – AFischbein

Смежные вопросы