2016-04-04 11 views
1

私はかなり標準的なBindingSource/DataGridViewの組み合わせを持っています。 bindingSourceには、DataGridViewに通貨として表示する必要がある小数点型のプロパティがあります。テストのために私はそれが私が代わりに£DataGridViewが正しいcultureinfoを表示しない

の通貨形式としてを使用して培養情報を使用している場合はどのように見えるかを確認したい私の問題は、である私は、プログラム(現在のスレッドのCurrentUICultureのを変更するものの、私のアプリケーションはスレッドが1つしかありません)、私のDataGridViewはまだ£と表示されます。

次のコードスニペット私のために作成したデザイナー:

this.columnPriceValue = new Forms.DataGridViewTextBoxColumn(); 
this.columnPriceValue.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; 
this.columnPriceValue.DataPropertyName = "Value"; 
dataGridViewCellStyle2.Format = "C4"; 
... 

私はstackoverflowの答えに応じオランダ文化にCurrentUICultureの設定私のメインフォームのコンストラクタでHow to change CurrentCulture at runtime?

System.Threading.Thread.CurrentThread.CurrentUICulture = 
    CultureInfo.GetCultureInfo(0x0013); 

ので、 GBP記号がまだ表示されています。データをバインディングソースに追加する直前にcurrencySymbolを確認しました:

public void ShowPrices(IEnumerable<Price> prices) 
{ 
    string txt = System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.CurrencySymbol; 
    Debug.WriteLine(txt); 
    this.bindingSource1.DataSource = prices; 
    ... 

デバッガ出力ウィンドウにがまだ通貨記号ですが、まだDataGridviewには£が表示されています。

ユーロ記号を表示するにはどうすればよいですか?

答えて

2

ドゥセットThread.CurrentThread.CurrentCultureではなく、Thread.CurrentThread.CurrentUICultureです。

名前には何か異なる意味があるようですが、CurrentCultureは実際に値を表示するために使用する形式を決定するために使用されます。

は、リソースdllを使用するときに効果があり、使用されているリソースdllのみを決定するためにのみ使用されます。

も参照してください。What is the difference between CurrentCulture and CurrentUICulture properties of CultureInfo in .NET?

+0

+1;) – OhBeWise

0

編集

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(0x0013); 

前の回答

だけではなく、次のコマンドを使用します。

私が編集したとして、しかし述べたようNineBerryはそれに私を打ちます

を使用して特定の列にCultureInfoを設定してみてください:

this.columnPriceValue.DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo(0x0013); 

た場合、またはdataGridViewCellStyle2は、価格の列のセルテンプレートのスタイルです:

dataGridViewCellStyle2.FormatProvider = CultureInfo.GetCultureInfo(0x0013); 

以上一般的に、CurrentUICultureを設定した後:

dataGridViewCellStyle2.FormatProvider = Thread.CurrentThread.CurrentUICulture; 
関連する問題