質問

これはリサイズで特定のコントロールのためのCurrentCultureCurrentUICultureを上書きすることは可能ですか?この一つの特定のコントロールは、異なる文化を使用するように?

役に立ちましたか?

解決

あなたはあなたの選択ののCultureInfoをインスタンス化することによってそれを達成して(toStringなど)の機能をフォーマットするパラメータとしてそれを渡すことができます。それはのようなアプリケーションのための培養を変更しますので、ちょうど、Thread.CurrentThread.CurrentCultureまたはThread.CurrentThread.CurrentUICultureに割り当てないでください。

あなたのコードでます:

CultureInfo myCulture = CultureInfo.GetCultureInfo("en-US");
Console.WriteLine(DateTime.Now.ToString(myCulture));
あなたのコードは、外部コードを実行し、あなたが内部的に選ばれた文化を使用するには、このコードを強制したい場合は、

は、新しいスレッドを作成することによって、そのスレッドに文化を割り当てることを行うと、そのスレッドがコードを実行することができます。ただ、そのアプローチに付属しているスレッドの問題に注意を払うようにしてください。

スレッドのサンプルます:

string formattedDate = string.Empty;
Thread t = new Thread(delegate()
{
    // call external code without specifying culture
    formattedDate = DateTime.Now.ToString();  
    waitHandle.Set();
});
t.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
t.Start();
waitHandle.WaitOne(); // wait for the thread to finish
Console.WriteLine(formattedDate);

最後の点として、私はが、なぜは、あなたがのCurrentCultureを上書きしたいかわからないが、私はあなたがそうする前に二度考えることを示唆しています。ユーザーは日付をそのロケールに従ってフォーマットされた数字を見に使用されています。それを変更すると、それはUIのほんの一部に起こる場合は特に、混乱する可能性があります。

他のヒント

私はあなたが単一のコントロールのためにそれを行うことができるとは思わないが、現在のスレッドのためにあなたは、このように切り替えることができます:

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("DE");
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top