2016-04-04 16 views
1

Ich habe eine ziemlich Standard BindingSource/DataGridView Kombination. Die bindingSource hat eine Eigenschaft vom Typ dezim, die in der DataGridView als Währung angezeigt werden muss. Für einen Test möchte ich sehen, wie es aussieht, wenn ich eine Kultur Info verwenden, die als Währungsformat statt £DataGridView zeigt keine korrekten culturinfo

Mein Problem ist, dass, obwohl ich programmatisch ändern, um die CurrentUICulture des aktuellen Threads verwendet (Meine Anwendung hat nur einen Thread), mein DataGridView zeigt immer noch £.

Der Designer für mich den folgenden Code-Schnipsel erstellt:

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

Im Konstruktor meiner Hauptform ich die CurrentUICulture der niederländischen Kultur How to change CurrentCulture at runtime? Antwort nach einem Stackoverflow gesetzt

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

Weil Das GBP-Zeichen wird weiterhin angezeigt. Ich habe das currencySymbol kurz vor dem Hinzufügen der Daten zur Bindungsquelle überprüft:

Das Debugger-Ausgabefenster zeigt, dass immer noch das Währungssymbol ist, aber das DataGridview zeigt immer noch £.

Was zu tun, damit es das Eurozeichen zeigt?

Antwort

2

konfiguriere Thread.CurrentThread.CurrentCulture, nicht Thread.CurrentThread.CurrentUICulture.

Obwohl die Namen scheinen etwas anderes zu implizieren, wird CurrentCulture tatsächlich verwendet, um zu entscheiden, welche Formate verwendet werden, um Werte anzuzeigen.

CurrentUICulture hat nur einen Effekt, wenn Sie Ressource-DLLs verwenden und wird dann nur verwendet, um zu entscheiden, welche Ressource-DLL geladen wird.

Siehe auch What is the difference between CurrentCulture and CurrentUICulture properties of CultureInfo in .NET?

+0

Beat mich dazu. +1;) – OhBeWise

0

bearbeiten:

NineBerry schlagen mich, wie ich war Bearbeitung, aber wie gesagt:

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

Zurück Antwort:

Nur die stattdessen folgende verwenden

Versuchen Sie, die CultureInfo für die spezifische Spalte mit dereinzustellen:

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

Oder wenn dataGridViewCellStyle2 ist der Stil für die Zelle Vorlage der Spalte Preis:

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

Oder allgemeiner, nachdem die CurrentUICulture Einstellung:

dataGridViewCellStyle2.FormatProvider = Thread.CurrentThread.CurrentUICulture; 
Verwandte Themen