Отправить специальный символ с помощью SendKeys

я использую текстовые поля для отправки текста через SendKeys, но когда я вставляю специальные символы в текстовое поле, мое приложение аварийно завершает работу. Например, когда я помещаю " + "в текстовое поле, я получаю эту ошибку: строка SendKeys" + " недопустима.

мне нужно решение для отправки специальных символов с помощью SendKeys, это часть моего кода:

SendKeys.Send(dropDownEffectsLeft1.SelectedItem.ToString() + dropDownEffectsRight1.SelectedItem.ToString() + txt1.Text);

это все о текстовом поле под названием txt1

Я думаю, что нужно что-то вроде Regex чтобы проверить, если мой txt содержит любые специальные символы, и что я буду делать с:

Regex specialChar = new Regex(@"^[a-zA-Z0-9_@.-]*$");

Я очень ценю вашу помощь.

1 ответов


С MSDN SendKeys:

знак плюс ( + ), карет ( ^ ), знак процента ( % ), Тильда ( ~ ), и скобки () имеют особое значение для SendKeys. Чтобы указать один из эти символы заключают его в фигурные скобки ({}). Например, укажите знак плюс, используйте" {+}". Чтобы указать символы скобок, используйте "{{}" и."}}{" Скобки ([]) не имеют специального значения для SendKeys, но вы должны заключить их в скобки. В других приложениях скобки есть особое значение, которое может иметь значение при динамических данных происходит обмен (DDE).

код

поэтому вам просто нужно регулярное выражение для замены этих символов:

string txt = Regex.Replace(txt1.Text, "[+^%~()]", "{}");
SendKeys.Send(txt);

тест

я протестировал код, и у меня есть онлайн-тест, который вы можете проверить на regex [+^%~()]

  • вход: Plus + Caret ^ Percent % Tilde ~ Parenthis ()
  • выход Плюс { + } Карет {^} Процентов {%} Тильда {~} Parenthis {(} {)}

Рей