0

私が働いている会社には、途方もなく古いデータベース システムと、ASCII 以外の文字に遭遇したときにハード エラーをスローする多くのレガシー アプリがあります。

これらのアプリを廃止する必要があることに気付いたので、vb.net WinForms アプリでバックエンドをラップし始め、これらの古いシステムを 1 年半ラップした後、このバグを発見しました。

彼らは問題を解決するために私を雇った. :(

多くの場合、UI は、DevExpress などのサード パーティのデータ バインディングと FormView 風のソリューションを使用して構築されました。その結果、UI を分解し、次のような中間ユーティリティ関数を使用して再構成するには、多くの作業が必要になります。

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

アプリケーションの CultureInfo (またはその他のプロパティ) をハックして、すべてのテキスト ボックスがネイティブで ASCII のみを処理できるようにする方法を探しています。これは、多くの Web ブラウザーが示す動作と同様です。

また、メモとして: テキスト入力の多くは dev Express から取得されるため、使用されているテキスト ボックスもラップされます。

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

誰かがこれに遭遇したに違いありません。私が導入できる恐ろしいハックがなければ、これらのアプリをすべて修正するには 2 年かかります。

4

1 に答える 1

1

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

次に、KeyPressイベントを処理しe.Handled = true、キャラクターが気に入らない場合に設定します。

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

于 2010-12-17T19:04:19.047 に答える