DOBON.NET DOBON.NETプログラミング掲示板過去ログ

カルチャの変更の仕方

環境/言語:[WinXP Visualstudio2008 VB]
分類:[.NET]

質問させて頂きます。宜しく御願いします。

VBで開発したアプリについて、使用するカルチャを内部から変更する手段を考えています。
まずデザイナでForm1というメインフォームを作成し、そこにlabel1というラベルを作成しました。
次にForm1のlocalizableプロパティをTrueにし、languageプロパティを英語(米国)に設定してlabel1のTextプロパティを"English"にしました。
更にlanguageプロパティを日本語(日本)に設定してlabel1のTextプロパティを"日本語"にしました。
これでそれぞれの言語のリソースファイルが生成されたので、次のようなコードを作成しました。

Imports System.Threading
Imports System.Globalization

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")

End Sub
End Class

これでカルチャは英語(米国)に変更されているはずだと思うのですが、実行するとlabel1の表示は"日本語"になります。
label1に"English"と表示させるためにはどうすればよいでしょうか?

以上、宜しく御願い致します。
■No30942に返信(あかつきさんの記事)
> これでカルチャは英語(米国)に変更されているはずだと思うのですが、
Form1.Load では遅いです。

リソースの読み取りは、コンストラクタから呼ばれる InitializeComponent 内で
実施されますので、それよりも前に切り替える必要があります。

たとえば、スタートアップの Main プロシージャ内にて、
Application.Run メソッドを呼び前に処理を記述しておくか、
もしくは、フォームのコンストラクタの先頭に記述するようにします。

Public Class Form1
    Public Sub New()
        Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")
        InitializeComponent()
    End Sub
End Class
  • 題名: Re[2]: カルチャの変更の仕方
  • 著者: あかつき
  • 日時: 2012/09/20 9:17:41
  • ID: 30946
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No30945に返信(魔界の仮面弁士さんの記事)

教えていただいた方法で解決しました。
有難うございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板