2011-01-27 7 views
4

.NET 4.0を使用しています。すべてのフォームでローカリゼーションが有効になり、3つの言語に翻訳されます。 program.csで実行しているメインフォームを言語ボタン付きのログインフォームとして開きたいと思います。言語が選択されると、現在のスレッドのカルチャ情報を変更できないので、要求されたカルチャで新しいスレッドを開きたいと思います。それを行う最も簡単な方法は何ですか?言語要件のために別のスレッドでフォームを開く方法

おかげ

+1

現在のスレッドのカルチャを変更できないのはなぜですか? – JeremyDWill

答えて

6
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-ca"); 
1

MyThread.CurrentUICulture = value;あなたが読むことができるhere.

3

はこれをしないでください、それは設計で確実に動作することはできません以上。実行する最初の明らかな欠陥は、すべてのWindowsダイアログで言語(MessageBox、OpenFileDialogなど)が変更されないことです。彼らは常にシステム言語を使用します。はるかに深刻なのは、明らかではない欠陥です。任意のスレッドのカルチャ、特にスレッドプールスレッドを簡単に制御することはできません。彼らはソートされたリスト(UIスレッド内でもうソートされていないリスト)を埋めるような厄介なことをします。このような多くの他の微妙な問題。

さらに、これはユーザーが一切必要としない機能です。彼らは母国語をオンザフライで切り替えることはありません。マシンが実際に多言語ユーザーによって使用されている場合は、システム言語の切り替えを可能にするWindowsのバージョンを使用します。あなたのアプリは自動的にスーツに従います。

+0

この機能は、国の言語を話さない外国人労働者がいる環境で実行されるため、この特定のプログラムには実際に必要です。 – user592719

+0

スレッドの作成と管理について懸念しています。だから、どうやってこれをやりますか?ありがとう – user592719

+0

そのための良い解決策はありません。 .NETは自身が作成するたくさんのTPスレッドを使用します。 –

関連する問題