2012-04-23 2 views
1

実行時にユーザーがGUI言語を変更できるWindows CEアプリケーションを作成しています。 フォームのLoadイベントで独自の翻訳ロジックを実装しました。Compact Framework - 開いているフォームをすべて入手する

ここで、ユーザーが言語を変更すると、開いているフォームをすべて更新したいと思います。 開いているフォームをすべて取得する方法はありますか?

+0

http://stackoverflow.com/q/3202000/108847の重複がありますが、これが役立つかもしれません。http://dandohotaru.blogspot.co.uk/2007/11/caching-opened-forms-in-net- compact.html。グローバリゼーションとリソースファイルを使用するのではなく、なぜあなた自身の翻訳を展開していますか? – Fishcake

+0

2番目のリンクは興味深いですね、ありがとう。 – jdetaeye

+0

デフォルトのグローバリゼーションを使用したくない理由は、OSの言語設定を使用せずに、独自のアプリケーション言語設定を使用したいからです。 Compact Frameworkでは、ローカライズ可能なフォームと言語設定は、OS言語設定との組み合わせでのみ使用できると私は信じています。 – jdetaeye

答えて

2

すべてのフォームをインスタンス化するために使用するFormManagerクラスを作成できます。これにより、マネージャは、Closeイベントをリッスンしてフォームのライフサイクルを追跡し、共通のインターフェイス(OnUiLanguageChangedメソッドを使用しているものなど)を使用する場合は、一括でメソッドを呼び出すことができます。

また、アプリケーションで、各フォームがサブスクライブできるイベントを公開するオブジェクトを作成することもできます。このようにして、どのフォームが開いているかを知る必要はありません。 Inteadのすべての開いているフォームは、開いている限り、UiLanguageChangedイベントをリッスンしています。受信した場合、適切に更新できます。

関連する問題