В настоящее время я придерживаюсь проблемы форматирования номера, и я действительно не знаю, как его решить.Переопределение региональных настроек в .NET Framework
Я использую функцию из Support
сборки:
'StringToFormat looks like "123.456789"
'FormatInfo looks like "0.000" (must display three decimals)
Support.Format(StringToFormat, FormatInfo)
Он отлично работает, когда что Зависит мои региональные настройки не установлены должным образом, он не работает ... StringToFormat
является переменным, которые приходят от другого приложение (через TCP/IP), и я не могу его изменить. Поэтому, когда Десятичный разделитель настроен на coma вместо точки, функция Format делает странные вещи и не отображает мои значения правильно.
Чтобы решить эту проблему, я написал небольшую функцию, которая на самом деле создает новую культуру и убеждается, что десятичный разделитель точка:
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
Однако, это не похоже на работу, как, когда я иду к региональным настройкам и измените разделитель на кому, функция Format снова станет странной. Это похоже на то, что эти параметры отменят все, что я могу сказать в моей программе ...
Мой вопрос: Как я могу заставить функцию Support.Format
(и другие) использовать точку в качестве разделителя десятичной дроби, без необходимости вручную ее устанавливать региона и языка панели управления?
Я был в вашей ситуации несколько месяцев назад, и самым быстрым решением было проверить в «Просмотр номера» и сохранить в базе данных в моем формате. – CristiC777
Используйте Decimal.ToString() и передайте CultureInfo.InvariantCulture в качестве поставщика формата. –