I am using textboxes to send text via SendKeys, but when I insert special characters in the textbox, my application crashes. For example, when I put in a '+' in the textbox, I get this error: SendKeys string '+' is not valid.
I need a solution to send special characters with SendKeys, this is a part of my code:
SendKeys.Send(dropDownEffectsLeft1.SelectedItem.ToString() + dropDownEffectsRight1.SelectedItem.ToString() + txt1.Text);
It's all about the textbox called txt1
I think I need something like a Regex
to check if my txt
contains any special characters, and that I will do with:
Regex specialChar = new Regex(@"^[[email protected]]*$");
I really appreciate your help.
" Special characters (~ {}+^%) are not supported in SendKeys if an interval value is provided. Separate calls can be used to send control characters." The SAP System will accept the Parentheses in the field if entered manually. This is only an issue in Blue Prism and the Global Send Keys.
In the SendKeys method, the character for using the SHIFT key is “+” (Plus sign), so enter the “+” sign-in code. Now plus sign works as a SHIFT key, the next key along with SHIFT we use is the F2 key.
Handling Special Characters and Global Send Keys We have a process that enters A bank account Name into an SAP System. At times these Names may contain Parentheses as Customers are creating these names. ex "Bob's (Vacation) Checking" When we enter the data as we find it via "Global Send Keys" Action in a Navigation block.
SendKeys in VBA language is a method used to send keystrokes to the active window so that we can work manually after that. Whenever we use alphabets as the keys all the alphabets need to be in lowercase characters. It is a complex method and recommended to use only if necessary and when you are out of options
From MSDN SendKeys:
The plus sign (+), caret (^), percent sign (%), tilde (~), and parentheses () have special meanings to SendKeys. To specify one of these characters, enclose it within braces ({}). For example, to specify the plus sign, use "{+}". To specify brace characters, use "{{}" and "{}}". Brackets ([ ]) have no special meaning to SendKeys, but you must enclose them in braces. In other applications, brackets do have a special meaning that might be significant when dynamic data exchange (DDE) occurs.
So you just need a regex to replace those characters:
string txt = Regex.Replace(txt1.Text, "[+^%~()]", "{$0}");
SendKeys.Send(txt);
I tested the code and I have an online test you can check out for the regex [+^%~()]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With