标签: cultureinfo

CultureInfo.CurrentCulture 在运行时不会更改

我用一个按钮创建了一个简单的窗口应用程序

\n\n
public partial class Form1 : Form\n{\n    public Form1()\n    {\n        InitializeComponent();\n    }\n\n    private void button1_Click(object sender, EventArgs e)\n    {\n        MessageBox.Show(CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  • 第一次点击“按钮 1”时,它显示“$”
  • \n
  • 我打开控制面板 > 区域和语言,将货币符号从“$”更改为“\xe2\x82\xac”
  • \n
  • 再次点击“按钮1”,它也显示“$”==>我的预期结果是“\xe2\x82\xac”
  • \n
\n\n

看来 CultureInfo.CurrentCulture 在运行时不会改变。谁能给我提供其他变量来获取当前的窗口货币格式

\n

c# cultureinfo

2
推荐指数
1
解决办法
4268
查看次数

有没有办法从 C# CultureInfo 获取标志图像?

如果我有一个CultureInfo实例,是否有任何简单的方法(内置、通过框架或通过操作系统)来获取与该文化相匹配的“标志”图标?这将避免创建单独的查找。

我在的文档CultureInfo中找不到完成这项工作的成员函数,但也许还有一些其他不太费力的方法涉及我尚未找到的其他 .NET 类。

.net c# localization cultureinfo

2
推荐指数
2
解决办法
5995
查看次数

为什么 Convert.ToInt32 接受 IFormatProvider?

对我来说,在 Convert 类中进行以下重载是有意义的

public static double ToDouble(string value, IFormatProvider provider);
Run Code Online (Sandbox Code Playgroud)

例子:

Console.WriteLine(Convert.ToDouble("3223.2", CultureInfo.InvariantCulture)); // success
Console.WriteLine(Convert.ToDouble("3223,2", new CultureInfo("fr-FR"))); // success
Console.WriteLine(Convert.ToDouble("3223.2", new CultureInfo("fr-FR"))); // failure
Run Code Online (Sandbox Code Playgroud)

但是使用以下重载的示例是什么?

public static int ToInt32(string value, IFormatProvider provider);
Run Code Online (Sandbox Code Playgroud)

下面一切都失败了:

Console.WriteLine(Convert.ToInt32("3223.2", CultureInfo.InvariantCulture));
Console.WriteLine(Convert.ToInt32("3223,2", new CultureInfo("fr-FR")));
Console.WriteLine(Convert.ToInt32("3223.2", new CultureInfo("fr-FR")));
Run Code Online (Sandbox Code Playgroud)

换句话说,是否存在任何有效的整数字符串表示形式(在任何区域性中),如果不指定 IFormatProvider 就无法将其转换为 int?

.net cultureinfo number-formatting

2
推荐指数
1
解决办法
6213
查看次数

使用 C# 获取当前国家和位置详细信息

我想知道我的应用程序在哪里使用。

这是获取国家/地区名称和时区的代码:

TimeZone localZone = TimeZone.CurrentTimeZone;
var result = localZone.StandardName;
var s = result.Split(' ');
Console.WriteLine(s[0]);
Console.WriteLine(RegionInfo.CurrentRegion.DisplayName);
Run Code Online (Sandbox Code Playgroud)

但我的问题是,任何人都可以更改时区。根据时区,我可能会得到错误的名字。并且区域设置为美国,无法更改。因为所有用户都有相同的设置,并且我的应用程序有数十万用户。

有什么方法可以读取任何操作系统设置/系统设置并获取使用我的应用程序的当前国家/地区?

c# regioninfo cultureinfo

2
推荐指数
1
解决办法
9320
查看次数

如何从 .NET 中的 CultureInfo 获取 ISO 3166 国家/地区代码

给定一个CultureInfo对象,如何获取两个字符的 ISO 3166 国家/地区代码?例如en-US,来自,我想要US和来自en-GB,我想要GB。我还需要处理文化可能没有国家/地区代码的情况。

.net culture cultureinfo iso-3166 .net-core

2
推荐指数
1
解决办法
1024
查看次数

在不创建应用程序的情况下确定PC的本地文化

有什么方法可以在不运行应用程序的情况下确定PC的本地文化(例如en-US)?我尝试在“控制面板”中查找| 区域设置(运行WinXP),但是我不知道那里的选择如何映射到PC的文化。

我正在寻找不需要创建.exe的解决方案,例如从命令提示符(不是PowerShell)运行命令,或者运行VbScript或JS文件(只要我们了解的是真正的文化,而不是IE)设置。)

谢谢

.net culture localization cultureinfo

1
推荐指数
1
解决办法
1783
查看次数

以美国文化格式显示货币值

如何以美元文化格式显示货币价值,如$ 5,123,456.55.我知道我可以使用ToString方法做但不知道怎么做?

c# asp.net formatting cultureinfo

1
推荐指数
1
解决办法
1933
查看次数

我如何通过LCID获得文化

在我的应用程序(MVC3)中,我将文化信息列表绑定到下拉列表,并根据选择我已将数据库中的LCID值存储.现在我想使用LCID获取Culture,我如何获得使用LCID值?

asp.net-mvc cultureinfo

1
推荐指数
1
解决办法
4266
查看次数

如何使字符串比较在进程/线程级别上不区分大小写?

我正在阅读C#中的字符串比较,我想知道:

我可以预定义进程/线程级别的比较信息不区分大小写,所以我可以==在比较两个字符串时直接使用吗?

.net c# string globalization cultureinfo

1
推荐指数
1
解决办法
110
查看次数

字符串未被识别为阿拉伯语的有效日期时间

我正在使用下面的代码将字符串转换为datetime(使用选定的语言).它适用于除阿拉伯语之外的所有其他语言.当传递ar作为CultureInfo时,它会抛出错误"字符串未被识别为有效的DateTime".它的原因是什么?

CultureInfo ci = new CultureInfo("ar"); //works well for en,de,fr,hi,ru
string mDate = "2018-07-15 17:00";
DateTime userTime = Convert.ToDateTime(mDate,ci);
Run Code Online (Sandbox Code Playgroud)

c# datetime cultureinfo uwp

1
推荐指数
1
解决办法
466
查看次数