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