- PR -

メッセージボックスのボタン名の変更

1
投稿者投稿内容
たけ
常連さん
会議室デビュー日: 2004/02/23
投稿数: 42
お住まい・勤務地: 神奈川県/東京都
投稿日時: 2006-12-14 01:42
お世話になります。

【開発環境】
VisualStudio2003
VB.NET


現在多言語対応のアプリを作成しています。

アプリ中で使用するメッセージは各言語ごとのファイルを用意しておいて
それらを読み込むことで切り替えるのですが、
メッセージボックスのボタン名(OKやキャンセル、はい、いいえ等)は
メッセージボックスの種類を指定すると自動的に決まってしまいます。

これでは困るので、これを自分の好きなように変更したいのですが可能でしょうか?
(はい→YES、キャンセル→CANCELなど)


よろしくお願いいたします。
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2006-12-14 06:38
今日は

CurrentUICultureを設定すると自動的に変更されます。
CurrentCultureだけではダメです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-12-14 07:44
引用:

たけさんの書き込み (2006-12-14 01:42) より:

これでは困るので、これを自分の好きなように変更したいのですが可能でしょうか?
(はい→YES、キャンセル→CANCELなど)


本当の意味で "自分の好きなように" を求めると、自作のダイアログを作るという発想になります。
(Yes, No, Cancel くらいならば、en-us 圏のカルチャを設定するだけですが)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
たけ
常連さん
会議室デビュー日: 2004/02/23
投稿数: 42
お住まい・勤務地: 神奈川県/東京都
投稿日時: 2006-12-15 08:06
>rvmxさん
自動的に変更されるのですね。
それで十分です。試してみます。

>じゃんぬねっとさん
ほんとに自由に変更するには自作なんですね。
今回は既定のものが変換されればいいので、
rvmxさんの方法でやってみます。


ありがとうございました。
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2006-12-15 09:11
今日は

多言語対応とは、どの様な環境での使用を想定しているかによりますが
もし、OSの動作環境と同じ言語で表現にしたいのなら、特にCurrentUICultureの設定は必要有りません、自動的に設定されます。
但し、OS環境と違った言語の表現が必要な時は設定が必要です。
コントロールボックスで地域と言語を切り替えてみればテストできます。
たけ
常連さん
会議室デビュー日: 2004/02/23
投稿数: 42
お住まい・勤務地: 神奈川県/東京都
投稿日時: 2006-12-15 15:14
またお世話になります。


教えていただいた情報をもとに検索したところ、
MSDNにカルチャの変更の仕方が書いてありました。
そこで、それを見ながら簡単なプログラムを作ったのですが、
カルチャが変更されてもメッセージボックスのボタンたちが日本語のままになってしまいます。

どこかおかしいところがあると思うのですが、どこが悪いのか分かりません。
よろしければご教授お願いいたします。

ちなみに、OSは日本語のWindows2000です。

[プログラム概要]
フォーム上にコンボボックスとボタンが2つ(Getボタン、Setボタン)あり、
Setボタンを押すとコンボボックスで選択した言語にカルチャを変更するものです。
Getボタンを押すと、現在のカルチャの情報をメッセージボックスで表示します。

コード:
Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'すべてのカルチャ情報(=CultureInfoオブジェクトの配列)を取得
    Dim cultures() As System.Globalization.CultureInfo = _
                    System.Globalization.CultureInfo.GetCultures(CultureTypes.AllCultures)

    'ComboBoxに取得したカルチャ情報を設定する
    Me.CultureListComboBox.DataSource = cultures

    'CultureInfoオブジェクトのDisplayNameプロパティの値が
    'ComboBoxのリストに表示されるように設定する
    Me.CultureListComboBox.DisplayMember = "DisplayName"
End Sub

'現在のカルチャをメッセージボックスで表示する
Private Sub GetButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GetButton.Click
    MessageBox.Show(Thread.CurrentThread.CurrentCulture.NativeName, _
                    Thread.CurrentThread.CurrentUICulture.ToString, _
                    MessageBoxButtons.OKCancel, _
                    MessageBoxIcon.Question, _
                    MessageBoxDefaultButton.Button1)
End Sub

'コンボボックスで選択されたカルチャに変更する
Private Sub SetButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SetButton.Click
    'Dim asm As [Assembly] = [Assembly].GetExecutingAssembly()
    'Dim ci As System.Globalization.CultureInfo = asm.GetName().CultureInfo

    '選択されているカルチャ情報を取得する
    Dim culture As System.Globalization.CultureInfo = _
                    CType(Me.CultureListComboBox.SelectedItem, System.Globalization.CultureInfo)

    Try
        Thread.CurrentThread.CurrentCulture = _
                      System.Globalization.CultureInfo.CreateSpecificCulture(culture.ToString)
        'Windowsフォームのリソースに対応したUIカルチャを設定する
        Thread.CurrentThread.CurrentUICulture = culture
    Catch ex As Exception
        MessageBox.Show(ex.Message)
        Return
    End Try
End Sub

1

スキルアップ/キャリアアップ(JOB@IT)