10

テキスト ボックスを使用して SendKeys 経由でテキストを送信していますが、テキスト ボックスに特殊文字を挿入すると、アプリケーションがクラッシュします。たとえば、テキストボックスに「+」を入力すると、次のエラーが表示されます: SendKeys string '+' is not valid.

SendKeys で特殊文字を送信するソリューションが必要です。これは私のコードの一部です:

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

それはすべてと呼ばれるテキストボックスについてですtxt1

特殊文字が含まれているかRegexどうかを確認するには、次のようなものが必要だと思います。txt

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

本当にありがとうございました。

4

2 に答える 2

20

MSDN SendKeysから:

プラス記号 (+)、キャレット (^)、パーセント記号 (%)、チルダ (~)、および括弧 () は、SendKeys にとって特別な意味を持ちます。これらの文字のいずれかを指定するには、中かっこ ({}) で囲みます。たとえば、プラス記号を指定するには、「{+}」を使用します。中括弧文字を指定するには、「{{}」および「{}}」を使用します。角かっこ ([ ]) は SendKeys にとって特別な意味はありませんが、中かっこで囲む必要があります。他のアプリケーションでは、動的データ交換 (DDE) が発生したときに重要になる可能性がある特別な意味を角かっこが持っています。

コード

したがって、これらの文字を置き換えるには正規表現が必要です。

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

テスト

コードをテストしました。正規表現を確認できるオンライン テストがあります。[+^%~()]

  • 入力:プラス + キャレット ^ パーセント % チルダ ~ 括弧 ( )
  • 出力プラス {+} キャレット {^} パーセント {%} チルダ {~} 括弧 {(} {)}
于 2013-08-18T13:03:28.047 に答える