我正在使用文本框通过SendKeys发送文本,但是当我在文本框中插入特殊字符时,我的应用程序崩溃了。例如,当我在文本框中输入“+”时,我收到此错误:SendKeys字符串'+'无效。
我需要一个使用SendKeys发送特殊字符的解决方案,这是我的代码的一部分:
SendKeys.Send(dropDownEffectsLeft1.SelectedItem.ToString() + dropDownEffectsRight1.SelectedItem.ToString() + txt1.Text);
所有关于名为txt1
我想我需要Regex
这样的内容来检查我的txt
是否包含任何特殊字符,并且我将会这样做:
Regex specialChar = new Regex(@"^[a-zA-Z0-9_@.-]*$");
我非常感谢你的帮助。
答案 0 :(得分:11)
加号(+),插入符号(^),百分号(%),代字号(〜)和 括号()对SendKeys有特殊含义。指定其中一个 这些字符将其括在大括号({})中。例如,到 指定加号,使用“{+}”。要指定大括号字符,请使用 “{{}”和“{}}”。 Brackets([])对SendKeys没有特殊意义, 但你必须将它们括在大括号中。在其他应用程序中,括号 确实具有在动态数据时可能很重要的特殊含义 发生交换(DDE)。
所以你只需要一个正则表达式来替换这些字符:
string txt = Regex.Replace(txt1.Text, "[+^%~()]", "{$0}");
SendKeys.Send(txt);
我测试了代码,我有一个在线测试,你可以查看正则表达式[+^%~()]