2010-12-17 5 views
0

私が働いている会社には、ASCII以外の文字に遭遇したときに、ハードエラーを投げる大変古いデータベースシステムと多くのレガシーアプリケーションがあります。どのようにして入力を、.Net winformsアプリケーション全体で制限された文字セットに制限しますか。 (vb.net/c#)

彼らは、これらのアプリがvb.net WinFormsアプリでバックエンドをラッピングし始めたことを知り、1.5年後にこれらの古いシステムをラップして、このバグを発見しました。

彼らは問題を解決するために私を雇っています。 :(

多くの場合、UIはDevExpressのような第三者からのデータバインディングとFormView-esqueソリューションを使用して構築されています。その結果、UIを分解して同様の中間ユーティリティ関数で再構成する次へ:すべてのテキストボックスがネイティブにのみ行動の多くのWebブラウザに似たASCIIを扱うように

TextBox.Text = Sanitize(dataObject.Value); 
and 
dataObject.Value = Sanitize(TextBox.Text); 

私はアプリケーションのCultureInfo(またはいくつかの他のプロパティ)をハックすることができ方法を探していますように見えます

メモ:テキスト入力の多くは開発者からのものであり、したがって、使用されているテキストボックスは折り返されます。

FormsのControlAddedイベントにアタッチし、ASCII、またはutf-8/utf-7のみを扱えるようにコントロールを設定する方法はありますか?

誰かがこれに遭遇したことがあります。私が置くことができるいくつかの恐ろしいハッキングがない場合、これらのアプリをすべて修正するのに2年かかります。

答えて

1

フォームごとにControlAddedを再帰的に処理して、すべてのTextBoxを変更することができます。

次に、KeyPressイベントを処理し、文字が気に入らなければe.Handled = trueと設定します。

DevExpressエディターの場合は、TextEditまたはTextBoxMaskBoxを処理する必要がありますが、両方を処理する必要はありません。

関連する問題