我目前停留在數字格式問題,我真的不知道如何解決它。.NET Framework中的區域設置覆蓋
我用一個函數從Support
組件:
'StringToFormat looks like "123.456789"
'FormatInfo looks like "0.000" (must display three decimals)
Support.Format(StringToFormat, FormatInfo)
它工作正常exept當未設置我的區域設置正確,它不工作... StringToFormat
是來自另一個變量應用程序(通過TCP/IP),我無法更改它。因此,當小數分隔符被設置爲昏迷而不是點時,格式化函數做了奇怪的事情,並沒有正確顯示我的值。
爲了解決這個問題,我寫道,實際上創建了一個新的文化,並確保小數點分隔符是點一個小功能:
Sub UpdateRegionalSettings()
'I call this everytime I start my application
My.Application.ChangeCulture("x-en-US-custom")
End Sub
Sub CreateMyCulture()
'This function is called only if the culture doesn't exist yet
Dim C As New CultureAndRegionInfoBuilder("x-en-US-custom", CultureAndRegionModifiers.None)
C.LoadDataFromCultureInfo(New CultureInfo("en-US"))
C.LoadDataFromRegionInfo(New RegionInfo("US"))
C.NumberFormat.NumberDecimalSeparator = "."
C.NumberFormat.CurrencyDecimalSeparator = "."
C.Register()
End Sub
然而,這似乎並沒有因爲當我去上班到區域設置並將分隔符更改爲昏迷格式功能再次變得奇怪。它就像這些參數覆蓋任何我可以在我的程序中說...
我的問題是:如何強制Support.Format
(和其他人)函數使用點作爲小數點分隔符,而不必手動設置爲控制面板的地區和語言?
我幾個月前在您的情況,以及最快的解決方案是在查看編號時進行驗證,並以我的格式保存在數據庫中。 – CristiC777
使用Decimal.ToString()並將CultureInfo.InvariantCulture作爲格式提供程序傳遞。 –