C# DataGridView未显示正确的cultureinfo

C# DataGridView未显示正确的cultureinfo,c#,datagridview,globalization,C#,Datagridview,Globalization,我有一个相当标准的BindingSource/DataGridView组合。bindingSource具有decimal类型属性,该属性必须作为货币显示在DataGridView中。对于一个测试,我想看看如果我使用的文化信息使用€作为货币格式,而不是。 我的问题是,尽管我以编程方式更改了当前线程的CurrentUICulture(我的应用程序只有一个线程),但我的DataGridView仍然显示 设计师为我创建了以下代码段: this.columnPriceValue = new Forms.D

我有一个相当标准的BindingSource/DataGridView组合。bindingSource具有decimal类型属性,该属性必须作为货币显示在DataGridView中。对于一个测试,我想看看如果我使用的文化信息使用作为货币格式,而不是

我的问题是,尽管我以编程方式更改了当前线程的CurrentUICulture(我的应用程序只有一个线程),但我的DataGridView仍然显示

设计师为我创建了以下代码段:

this.columnPriceValue = new Forms.DataGridViewTextBoxColumn();
this.columnPriceValue.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
this.columnPriceValue.DataPropertyName = "Value";
dataGridViewCellStyle2.Format = "C4";
...
在主窗体的构造函数中,我根据stackoverflow答案将currentUICulture设置为Dutch Culture

因为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;
    ...
public void ShowPrices(IEnumerable prices)
{
字符串txt=System.Threading.Thread.CurrentThread.CurrentUICulture.NumberFormat.CurrencySymbol;
Debug.WriteLine(txt);
this.bindingSource1.DataSource=价格;
...
调试器输出窗口显示,仍然是货币符号,但DataGridview仍然显示

如何使其显示欧元符号?

编辑:

NineBerry在我编辑时击败了我,但正如所述:只需使用以下内容即可:

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

先前的答案

尝试使用
FormatProvider
为特定列设置
CultureInfo

this.columnPriceValue.DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo(0x0013);
或者如果
dataGridViewCellStyle2
是价格列单元格模板的样式:

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

或者更一般地说,在设置
CurrentUICulture
之后:

dataGridViewCellStyle2.FormatProvider = Thread.CurrentThread.CurrentUICulture;

设置
Thread.CurrentThread.CurrentCulture
,而不是
Thread.CurrentThread.CurrentUICulture

尽管这些名称似乎暗示了一些不同的东西,但实际使用的是CurrentCulture来决定使用什么格式来显示值

CurrentUICulture
仅在使用资源dll时有效,然后仅用于确定加载了哪个资源dll


另请参见

击败我。+1;)
dataGridViewCellStyle2.FormatProvider = Thread.CurrentThread.CurrentUICulture;