使用SendKeys发送特殊字符

时间:2013-08-18 12:44:30

标签: c# regex keyboard character 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 个答案:

答案 0 :(得分:11)

来自MSDN SendKeys

  

加号(+),插入符号(^),百分号(%),代字号(〜)和   括号()对SendKeys有特殊含义。指定其中一个   这些字符将其括在大括号({})中。例如,到   指定加号,使用“{+}”。要指定大括号字符,请使用   “{{}”和“{}}”。 Brackets([])对SendKeys没有特殊意义,   但你必须将它们括在大括号中。在其他应用程序中,括号   确实具有在动态数据时可能很重要的特殊含义   发生交换(DDE)。

代码

所以你只需要一个正则表达式来替换这些字符:

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

测试

我测试了代码,我有一个在线测试,你可以查看正则表达式[+^%~()]

  • 输入: Plus + Caret ^百分比%Tilde~Jarenthis()
  • 输出加{+}插入符{^}百分比{%} Tilde {〜} Parenthis {(} {)}

REY