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