2016-04-04 54 views
1

我有一個相當標準的BindingSource/DataGridView組合。 bindingSource具有必須在DataGridView中作爲貨幣顯示的十進制類型屬性。對於一個測試,我想看看是什麼樣子,如果我使用了一個作爲貨幣格式,而不是£DataGridView無法顯示正確的cultureinfo

文化信息我的問題是,雖然我編程方式更改當前線程的的CurrentUICulture(我的應用程序只有一個線程),我的DataGridView仍然顯示爲£

,我創建了下面的代碼片段設計者:

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

在我的主要形式的構造函數我根據計算器的答案的CurrentUICulture設置爲荷蘭文化How to change CurrentCulture at runtime?

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

因爲GBP標誌仍然顯示我在將數據添加到bindingsource之前檢查了currencySymbol:

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

調試器輸出窗口顯示仍然是貨幣符號,但DataGridview仍顯示£

如何讓它顯示歐元符號?

回答

0

編輯

NineBerry打我給它,因爲我是編輯,但指出:只要使用,而不是執行以下操作:

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

以前的答案

嘗試使用設置特定列的:

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

或者,如果dataGridViewCellStyle2是價格列的單元格模板的樣式:

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

或者更一般地,設置CurrentUICulture後:

dataGridViewCellStyle2.FormatProvider = Thread.CurrentThread.CurrentUICulture;